rcmdnk's blog

KeyRemap4MacBook_200_200

Macのキーバインド設定ソフトである Karabiner の中にVim EmulationというMacのどこでもVimっぽい動きを実装した 設定が入っていますが、 この設定の中でNormalモードに入る際のキーを簡単にカスタマイズ出来る様に変更しました。

Vim Emulation on Karabiner

Karabiner - OS X用のソフトウェア

Karabinerの中にはいくつかVimっぽい動きを実現する設定が入っていますが、 一番実際のVimに近い動き(モード変更など)を実現するのがVim Emulationの設定です。

通常はEsc-]などで Normalモードに入りますが、 その他J-Kの同時押しでNormalモードとInsertモードを 行き来したりする設定も入っています。

今まで要望に答えたりする形でいくつか設定を加えてきましたが、 今回自由にキーを簡単に設定できるようにしました。

Normalモードに入るキーを設定する

新たにNormalモードに入るキーを設定するには以下の項目を自分のprivate.xmlに追加します。

private.xml
1
2
3
4
5
6
7
8
9
<?xml version="1.0"?>
<root>
  ...
  <replacementdef>
    <replacementname>VIM_EMU_CUSTOMIZE_KEY</replacementname>
    <replacementvalue>KeyCode::RETURN</replacementvalue>
  </replacementdef>
  ...
</root>

この設定ならRETURNを押すとESCの代わりにNormalモードに。

そして、Karabinerの設定項目からVim Emulationの設定を探して ChangeKey13を有効にします。

2つ同時押しでNormalモード、Insertモードをトグルする

ChangeKey7, 8, 9でそれぞれJ-KQ-WS-D の同時押しでNormalモードとInsertモードを切り替える設定になっていますが、 この様な設定を他のキーで行うには、

private.xml
1
2
3
4
5
6
7
8
9
<?xml version="1.0"?>
<root>
  ...
  <replacementdef>
    <replacementname>VIM_EMU_CUSTOMIZE_SIMULTANEOUS_KEY</replacementname>
    <replacementvalue>KeyCode::O, KeyCode::P</replacementvalue>
  </replacementdef>
  ...
</root>

の様な設定をprivate.xmlに加えます。 これだとO-Pで切り替えられるように。

そして、Karabinerの設定項目から ChangeKey14を有効にします。

Karabinerでキー設定を簡単に切り替えられる様にする方法

メモを兼ねて上の様な設定をKarabinerで作る方法について。

Karabinerでは使える変数設定をKarabiner.app/Contents/Resources/replacementdef.xmlの中で最初に定義しています。

ソースだと Karabiner/src/core/server/Resources/replacementdef.xml

ここで上に書いた様な<replacementdef>の初期値が設定してあって ここで設定してないと後から追加とかは出来ません。

Vim Emulationに関しては

<include path="include/checkbox/vim_emu/vim_emu_replacementdef.xml" />

の様にファイルを読み込んでいますが、このファルの中に 上のVIM_EMU_CUSTOMIZE_KEY等の初期設定が入っています。

Karabiner/src/core/server/Resources/include/checkbox/vim_emu/vim_emu_replacementdef.xml

この様な設定を入れた後、読み込まれる設定の中で、

1
2
3
4
5
6
7
8
9
    <autogen>
      __HoldingKeyToKey__ {{VIM_EMU_CUSTOMIZE_KEY}},
      KeyCode::ESCAPE,
      KeyCode::VK_CONFIG_FORCE_OFF_notsave_vim_emu_search{{VIM_EMU_ALTCONFIG}},
      {{VIM_EMU_EMU_ON}}
      KeyCode::VK_CONFIG_FORCE_ON_notsave_vim_emu_normal{{VIM_EMU_ALTCONFIG}},
      KeyCode::VK_NONE,
      {{VIM_EMU_CUSTOMIZE_KEY}}, Option::NOREPEAT
    </autogen>

の様な感じで使いたい変数を使って上げればOK。

これで、private.xmlなどで何も設定しなければ初期値の値が、 設定されればそのあたいがこの設定部分で使われる様になります。

ちなみに、新たな設定を加えるには Resources以下にある include/checkboxディレクトリにファイルを置いて、 vim_emu.xml等のファイルを置いて、 Resources/checkbox.xmlの中に

<include once="true" path="{{ ENV_Karabiner_Resources }}/include/checkbox/vim_emu.xml" />

といった形で設定を加えます。

これらの設定はコンパイルとかしなくても既にインストールしてある Karabiner.appの中のファイルを直接いじることでも出来るので 気軽にテストできます。

Sponsored Links
Sponsored Links

« GNU Screen 4.4.0リリース Windows Insider previewを止めた »

}