2016/01/11

VSCode使用中にKarabinerのVimモード(エミュレーション)に入らないようにする

KarabinerのVim Emulationを使用すると、Vim以外で文書を編集するときでもhjklでカーソルを動かしたりできて便利です。しかし、それ自体がVimモードを持っているアプリケーションを使うときは無効にする必要があります。

有効にするアプリケーションの選択

有効にするアプリケーションの設定はprivate.xmlに記述します。private.xmlについて詳しくはリファレンスを参照してください。 このXMLファイルは例えば次のようになります。
<root>
<!--definition of VSCode -->
<appdef>
<appname>VSCODE</appname>
<equal>com.microsoft.VSCode</equal>
</appdef>
<replacementdef>
<replacementname>VIM_EMU_IGNORE_APPS</replacementname>
<replacementvalue>
TERMINAL,
VI,
PASSWORD,
EMACS,
Atom,
VIRTUALMACHINE,
PHOTOSHOP,
ILLUSTRATOR,
ADOBE,
ITUNES,
SYSTEM_PREFERENCES,
MAYA,
iPhoneSimulator,
VSCODE
</replacementvalue>
</replacementdef>
</root>
view raw private.xml hosted with ❤ by GitHub
VIM_EMU_IGNORE_APPSと書いてあるところの下に列挙されているのが、Vim エミュレーションを使用しないアプリケーションです。この中で指定されたアプリケーション使用中はescキーを押してもVimエミュレーションが始まりません。

VSCodeの設定はまだない

たいていのアプリケーションはすでに設定が用意されているので、そのアプリケーションに対応するコードを調べて書けば良いのですが、VSCodeについてはまだありませんでした。このため自分で追加する必要があるようです。アプリケーション内のappdef.xmlに記述した方がキレイなのではないかと思ったものの、今後VSCodeが追加される可能性もありそうなので、ひとまずprivate.xmlの中にVSCodeの設定も一緒に書いてみました。
上に示したprivate.xmlの先頭にあるのがVSCodeの設定です。<appdef>から</appdef>までを記述してVIM_EMU_IGNORE_APPSのリストにVSCODEを追加すればVSCode使用中はVimエミュレーションが発動しなくなります。