KarabinerはMacのキーバーンド変更アプリです。
その中でOS全体でVimの様な動き(EscでNormalモードに入ってk/j/h/lで上下左右移動) を実現するVim Emulationと言う設定がありますが、 その設定にズーム機能等を加えました。
Karabiner, Vim Emulation
Vim EmulationはKarabinerに入っているキー設定です。
テキストエディットやメーラー等、アドオン等が無いものでも どこでもVimの様な動きを再現します。
Normalモード(k/j/h/lでの移動、yyで一行コピー等)やVisualモード(カーソル移動で範囲選択)等 簡単なVimの作業が再現されます。
Finder等でもNormalモードに入ればk/j/h/lでファイルの選択を移動できます。
ズーム機能
以下の設定をノーマルモード時のズーム機能として追加しました。
- zi: ズームイン (⌘-+)
- zo: ズームアウト (⌘--)
- z0: ズームリセット (⌘-0)
この様な設定は FirefoxのVimperator (z0は無し)や ChromeのcVim でもこの様なキーで拡大、縮小が出来る様になっています。
z*
なキーはVimでは畳込み用のキーになっていますが、
Vim以外では流石に畳み込みを実現するのは難しいので
別の機能として使っています。
具体的にはキーバインドは上のカッコ内の様になっています。 これらのキーは大概のアプリで共通ですが、 例えばテキストエディットでは ⌘-+, ⌘--は テキストフォントの拡大、縮小に宛てられていて、 実際の表示上の拡大、縮小は ⇧-⌘-., ⇧-⌘-,になっています。 この実際の表示を直すのが⌘-0に宛てられていて、 ⌘-+, ⌘--で変更された フォントサイズは ⌘-0では戻りません。
というちょっとアプリごとの微妙な動きがありますが、取り敢えず一般的な設定で上のようにしました。 (テキストエディットだけが特別であればそれだけのパッチを宛てても良いと思いますが、 もしリクエストがあればやろうかな、程度で。)
I really wish there was zoom in and zoom out capability in the vim mode · Issue #15 · rcmdnk/vim_emu
+/-キー
ノーマルモード時に +、-をそれぞれ単独で押した時に、 次の行、前の行の空白以外の最初の文字に移動する様なキーを追加しました。
これはVimでもある機能です。
ちょっと以下のIssueで-を行末へ移動に設定したい、 という話があって、それを入れても良いかな、とも思ったんですが、 Vimにあるキーはそのまま入れたい、ということで +/-の機能を上の様に入れることにしました。
Is it possible to modify vim keybindings? · Issue #14 · rcmdnk/vim_emu
ちなみにVimで現在の行の最初の文字に移動するには^です。(これはVim Emulationに既に入っています。)
まとめ
ということでちょっとアップデートしましたが、 既にBeta版の方では入っています。
Karabinerの設定画面で、Misc & Uninstallに行って Check for beta updateをクリックするとベータ版がインストールできます。
ズーム機能などはVim自体にないものですが、 ブラウザのVimエミュレーターなどでは標準的に使われてるもので そう言った設定もまだいくつかあります。
どれを入れたらいいか見るのが面倒で今のところ他には入れてませんが、 もし、これが入ってたら便利、というのがあれば是非 GitHubのrcmdnk/vim_emuへIssueか Twitterなりなんなりで言ってっもらえれば、と。