開発の止まったConsole2の後継っぽいConsoleZを試している。シェルでずっと作業するわけじゃないのでckw-modで不満はなくて、Console2には乗り換える意味はなさそうだったんだけど、ConsoleZではウィンドウの再利用が行え、他のアプリケーションから新しいタブを開くということが可能になったのでちょっと良い。
ウィンドウの再利用はSettings→BehaviorにあるInstancesのチェックを外すと、二重起動で新しいタブが開かれるようになる。通常はこれで良いはず。しかしこれだと常にひとつのウィンドウしか開けなくなるので、タブが切り離しできない現状だとちょっと使いづらいこともある。なのでコマンドライン・オプションから制御する方が良い。オプションは-reuse
。
Console.exe -reuse -d C:\Users\Taroh
このようにすれば既存のConsoleZのウィンドウに新しいタブが追加され、指定ディレクトリがコマンド・プロンプトで開かれる。-t
オプションでタブ設定名を併せて指定すればBashとかでももちろん開くことができる。
Vimから簡単に呼べるように設定も書いた。
if has('win32')
" Reuse existing ConsoleZ instance
function! s:ReuseConsoleZ(...)
let tab = &shell
if a:0 != 0
let tab = a:1
endif
execute 'silent !start Console.exe -reuse -t ' . tab .' -d ' . expand('%:p:h')
endfunction
" Complete ConsoleZ tab
function! s:ConsoleZTabComplete(A, L, P)
let commands = ['cmd', 'bash', 'ps']
let matches = []
for cmd in commands
if cmd =~? '^' . a:A
call add(matches, cmd)
endif
endfor
return matches
endfunction
" ConsoleZ: Open ConsoleZ
command! -nargs=* -complete=customlist,<SID>ConsoleZTabComplete ConsoleZ call <SID>ReuseConsoleZ(<f-args>)
endif
デフォルトはVimのシェル設定から引っ張るようにして、追加でタブ設定を補完できるようにしておき、たまに必要になるPowerShellを起動しやすくしたりとかそんな感じ。あらかじめ-reuse
オプションでConsoleZを立ち上げておく必要はある。
ウィンドウの再利用に価値を感じるのならオススメとは言えそうだけど、描画パフォーマンスは相変わらず遅く、かっこ良くしたと主張しているタブは非常にダサい(特に消せない横スクロールボタン)。つい先程実装されたIMEのインライン化はトピックではあるけど、必要性には少し疑問が……。