2017-06-05

tobijibu

Cmderでminttyを使いながらCmderのHotkeyも使う

CmderにはAttachという機能があり、 その機能を使うと、他のアプリケーションをCmderのウィンドウ内で使うことができます。

大変便利なのですが、アプリケーションをAtattchすると、Cmderのショートカットキーが利用できなくなります。 これはCmderの仕様なのでどうしようもありません。

ただ、タブやペイン間の移動はショートカットキーで何とかしたいというのが正直なところです。

完全な解決策ではありませんが、解決方法があります。とても簡単です。

Cmderの設定

Settingsを開き、Keys & Macroを選択します。

Hotkeyの設定が表示されますので、右上の検索ボックスにchildを入力します。

すると結果に"Switch focus between ConEmu ..."といった設定が表示されます。 この設定のショートカットキーを設定してください。

私の場合は、Ctrl + Sを設定しました。コマンドラインや、vimに影響が少なく、なお且つ押しやすいためです。

そして、Save settingsで設定を保存します。


この設定はCmderに表示されているアプリケーション(ChildGui)から、 Cmder自体にフォーカスするショートカットキーです。 つまり、Cmderの内側にあるアプリケーションから、強制的にCmderのショートカットを受付待ちにさせることができます。

ですので、ショートカットキー(ここではCtrl + S)を押した直後は、 Cmderのショートカットキーを利用することができます。

ちなみに、CmderはConEmuをベースにしていますので、ConEmuでも同様の設定で対応可能です。

使い方

基本的にタブ移動であってもペイン移動を使って対応します。

Cmderでminttyを表示している時に、Ctrl + S(先ほど指定したショートカットキー)を押してから、 Ctrl + (num)を押します。

Ctrl + (num)はCmder内でデフォルトで定義されているショートカットキーです。 指定した番号のコンソールをアクティブ、つまり表示してくれます。

例えば1番目のペインならば、Ctrl + SCtrl + 1の順に押します。 ショートカットキーがCtrlを含んでいるならば押したままで大丈夫です。

今回設定したキーを例と同じ設定にした場合、Ctrlを押したまま、 S → 1の順で押すとスムーズにペインを切り替えることができます。

おまけ

コンソールの番号はタブバーの右端のメニューに表示されているのですが、少し分かりづらいです。 Cmderで開いているタブにコンソールの番号を表示させてみましょう。

Settingsを開き、MainTab barを選択します。

Tab templatesConsole:という設定ボックスに%c. を追加します。

参考

ConEmu - ChildGui
http://conemu.github.io/en/ChildGui.html