Drafts

@cm3 の草稿置場 / 少々Wikiっぽく使っているので中身は適宜追記修正されます。

cmder導入 2019/11/12版

Windowsは最近コマンドプロンプトを進化させているので、cmderの必要性は薄れてきている。まだ、たまに必要になるときもあると思うので、パソコン移行の際に4年半前の記事 cmder導入 - Drafts をアップデートした内容を記載しておく。基本ほとんど一緒です。cmder(mini)を導入した。

Explorerと統合

f:id:cm3ak:20150413151555p:plain

すると好きなディレクトリで簡便にCmderを立ち上げることができるようになる。

f:id:cm3ak:20150413151810p:plain

エイリアスの設定

cmder\config\user_aliases.cmdinit.bat から読み込まれているので、そこを変更。

miniでインストールしたこともあって

e.=explorer .
gl=git log --oneline --all --graph --decorate  $*
ls=ls --color $*

を削除し、

ls=dir /B $*
pwd=cd
mv=move $*
clear=cls
f=fossil $*

を設定した。

スタートアップ時にUTF-8に切り替え

上で起動時に読み込んでいるinit.batの末尾に

chcp 65001

を書き込んでおくと、起動時にUTF-8で起動できる。しかし、これによって

>>> sys.stdin.encoding
'cp65001'
>>> sys.stdout.encoding
'cp65001'
>>> sys.stderr.encoding
'cp65001'

と設定されてしまいこれらを使うプログラムがLookupError: unknown encoding: cp65001というエラーを吐いてしまうので、

set PYTHONIOENCODING=utf-8

も足しておくとよい(参考:Windows cmd encoding change causes Python crash - Stack Overflow)。

f:id:cm3ak:20150410200044p:plain

タイ語もちゃんと表示される^^

SSH クライアントは PuTTY のまま

登録し直すのが面倒というのもあるが、ファイルの交換についてはWinSCPみたいなソフトが便利で、それと連携しているのでPuTTYが便利というのが大きな理由。plink.exeをssh.exeにリネームしてパスを通しておけば、sshコマンドも使えるようになるが、putty plink.exe disabled history - Google グループにあるように上ボタンとかで履歴が効かないので不便。だから、普通にputtyを使っている。-load オプションを使えば登録しておいたセッションをロードできる。

バッチファイルを Cmder で実行する方法

:: Add init batch file if there is "init.bat" in current directory
@if exist %CD%\init.bat (
    call %CD%\init.bat
)

:: Add init batch file via EXEC_BAT environmental variable
@if defined EXEC_BAT (
    call %EXEC_BAT%
)

これを cmder\vendor\init.bat 内に記述。

実行ファイルのカレントディレクトリに init.bat という名前で置くか、

set "EXEC_BAT=.\\pyenv3\\Scripts\\activate.bat"
start "" "C:\Users\User\programs\cmder\Cmder.exe"

のようにしてcmderを立ち上げるときに環境変数経由で実行するバッチファイルを指定してあげると読み込める。例示しているように vitrualenv とか使っている時に便利。

ちなみに activate.bat の

set "PROMPT=$P:$_$G$S"

コメントアウトしておくと cmder のプロンプトを書き換えられずに済むので良い。

引数付でも実行できる。例えば、fui.bat

@echo off

set p=%~1%
cd "%DROPBOX%\projects\"
set EXEC_BAT="fui-sub.bat" %p%
start "" "C:\Users\User\programs\cmder\Cmder.exe"

と書いておいて、EXEC_BATで呼び出しているfui-sub.bat

@echo off

set p=%~1%
cd "%DROPBOX%\projects\%p%\"
echo opening %p% fossil ui page...
fossil ui

って書いておけば、引数は受け継がれ、cmder を使って fossil ui が実行される。

参考: