開発の止まった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のインライン化はトピックではあるけど、必要性には少し疑問が……。