コマンドプロンプトの代替を定期的に探してしまう。UTF-8なことをしている時とか、おしゃれ病にかかったときとか。存在は知ってたが、かなり使えるようになってきたので、cmder(mini)を導入した。
2019/11/12追記:アップデート版記事 cmder導入 2019/11/12版 - Drafts
Explorerと統合
- コマンドプロンプトを管理者権限で実行
すると好きなディレクトリで簡便にCmderを立ち上げることができるようになる。
エイリアスの設定
cmder\config\alias
が 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 cls
を書き込んでおくと、起動時にUTF-8で起動できる。しかし、これによって
>>> sys.stdin.encoding 'cp65001' >>> sys.stdout.encoding 'cp65001' >>> sys.stderr.encoding 'cp65001'
と設定されてしまいこれらを使うプログラムがLookupError: unknown encoding: cp65001
というエラーを吐いてしまうので、
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 オプションを使えば登録しておいたセッションをロードできる。
PuTTYのカラースキーマをcmderに合わせる
Monokaiというテーマがcmderのデフォルトになっており、それにPuTTYを合わせるには
Monokai style theme for PuTTY; colors copied from ST2's theme
にあるのをコピーして HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\monokai
の最後のところを自分の保存しているセッション名にして保存したレジストリ情報を結合すればよい。名前の中の*
なら%2A
になるなどの差異はあるので注意。
僕は好みで
"FontHeight"=dword:0000000b "Font"="MeiryoKe_Gothic" "Colour3"="0,0,0" "Colour2"="0,0,0"
の4カ所だけ変更して使っている。
バッチファイルを 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つでコードのコメントアウトに使っている。
バッチファイルを Cmder で実行する方法は分からない→上記の通り分かった
コマンドラインオプションに関するドキュメントは無く、/START
で開くディレクトリを指定するものと、上の「Explorerと統合」での/REGISTER
それを無効化する/UNREGISTER
しかオプションは受け付けていないらしい。レジストリいじって、バッチファイルを関連付けるアプリ自体をcmderに置き換えてしまうことはできるが、別にいつもそうしたいわけでもなく。ConEmuは /cmd
オプションでバッチファイルを指定できるので vender ディレクトリに入っている ConEmu を使うという手もあるが、そこまでして見た目にこだわるのも面倒なので諦めた。
また、起動時じゃなくてCmder立ち上げてからバッチファイルを実行してみたが、インタラクティブな設計にしていると、--color was unexpected at this time.
というエラーでクラッシュ。そういう場面では素直にコマンドプロンプトを使い続けよう。
参考:
- No list of command-line options? · Issue #370 · bliker/cmder
- cmder/CmderLauncher.cpp at master · bliker/cmder
- How to replace the 'cmd' alias in windows? - Super User
- console - How do I make conemu open bat files on double click? - Stack Overflow
CLCL にショートカットもどきを登録
bliker/cmderのREADMEにもっと素晴らしい方法が書かれていた(上の「Explorerと統合」)
start "" "C:\Users\User\programs\cmder\Cmder.exe"
みたいなバッチファイルを登録しておくと、新しいプロジェクトを始めるときにそこをカレントディレクトリにしたcmderが立ち上がる。ショートカットやバッチファイルの作業ディレクトリをカレントディレクトリとして引き継ぐには、Startupのコマンドからデフォルトの-new_console:d:%USERPROFILE%
オプションを外しておく必要がある。
cmd /k "%ConEmuDir%\..\init.bat"