Windowsは最近コマンドプロンプトを進化させているので、cmderの必要性は薄れてきている。まだ、たまに必要になるときもあると思うので、パソコン移行の際に4年半前の記事 cmder導入 - Drafts をアップデートした内容を記載しておく。基本ほとんど一緒です。cmder(mini)を導入した。
Explorerと統合
- コマンドプロンプトを管理者権限で実行
すると好きなディレクトリで簡便にCmderを立ち上げることができるようになる。
エイリアスの設定
cmder\config\user_aliases.cmd
が init.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)。
タイ語もちゃんと表示される^^
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
が実行される。
参考:
- BAT ファイルでファイル、フォルダの存在確認
- Windowsのパス(PATH)の読込順 と起動される順番 - それマグで!
- windows - How to associate batch files with another application rather than default cmd? - Super User ここに書いてある疑問を解決したことになる。
- キミは、バッチファイル(*.bat)でREM以外でコメントアウトする方法を知ってるか? - みちしるべ バッチファイルで :: でコメントアウトの由来
- バッチファイルのコメントはコロン2つでも良い - A Better Project@はてなダイアリー 一方、コロン1つだとフラグとややこしいので2つつけるのが一般化している。僕は2つで文章コメント、3つでコードのコメントアウトに使っている。