rcmdnk's blog

Vim以外でVimする: Mac編 で作ったvim_emuをアップデートしました。

Sponsored Links

Change Mode Keys

/symobl-[で Normal Modeに入るキーマップに加え、 これらでNormal-Insert ModeをToggleするキー、 j-kの同時押しでToggleするキー等を追加しました。

/symobl-[については 長押しでsymoblそのものを送る様にもしました。

Key/Commands Function
ChangeKey1 Escape to enter Normal Mode, holding to emulate raw ESC.
ChangeKey2 + Escape to back in Insert Mode
ChangeKey3 Escape to back in Normal Mode in other than Inser Mode.
ChangeKey4 Ctrl-[ to enter Normal Mode, holding to emulate raw ESC.
ChangeKey5 + Ctrl-[ to back in Insert Mode
ChangeKey6 Ctrl-[ to back in Normal Mode in other than Inser Mode.
ChangeKey7 Simultaneous jk toggles Normal-Insert Mode.
ChangeKey8 Simultaneous qw toggles Normal-Insert Mode.
ChangeKey9 Simultaneous sd toggles Normal-Insert Mode.
ChangeKey10 Ctlr-l toggles Normal-Insert Mode.
ChangeKey11 Tap Left Cmd toggles Normal-Insert Mode.
ChangeKey12 Tap Right Cmd toggles Normal-Insert Mode.

ChangeKey 1, 3 , 4, 6, 10-12についてはVisual Mode等の時にもNormal Modeへの 戻るキーとして使いますが7-9については同時押し操作の制限の関係で Visual Mode等の時には効きません。

従って、他のキーと組み合わせが必要で、他の操作への影響を最低限にしたい場合は 3や6を使います。

Enable Recording Macro

Vim等の色々機能がついたエディターで無くてはならない機能の1つとして キー操作をマクロとして保存して再び実行する、と言う機能があります。

KeyRemap4MacBook単体では再現するのが難しいのですが、 MadRuby という良さげなキー操作記憶再生アプリを見つけたので これを使ってマクロ機能を実装してみました 1。 フリーのアプリです。

このアプリは、ショートカットキーを使ってキー操作の記憶を開始して 再びショートカットキーで停止します。 実行もショートカットキーから。 さらに複数回の実行を指定することも出来ます。

アプリを導入したら、 これらのショートカットキーを以下の様に設定します。

Function Shortcut
Start Recording ---6
Stop Recording ---7
Play Macro ---8
Multiple Play Macro ---9

これらはvim_emuの中で参照して以下の様にキーが設定されています。 全てNormal Modeの時に有効です。

Key/Commands Function
q Start recording a macro.
q(while recording macro) Stop recording a macro.
@ Execute the macro once.
n@ (n=2-9) Execute macro n-times.

Vimと違ってqaaの様にマクロの収納先は指定しないでqだけで記憶を開始します。 従って記憶できる操作は1つだけです 2。 記憶中にNormal Modeに戻ってqで終了するわけですが、 この間に他のアプリに移ってしまっても、永遠とマクロを記憶し続けるので 気をつけて下さい 3

再生に関しても収納先の指定が無いので@だけで再生します。 注意として、@を繰り返して押す場合、も離して繰り返し 押さないと続けてマクロを上手く入力出来ません。

複数回実行したい場合は2~9までの数字を押した後に @を押せば数字分だけ実行します。

MadRubyのショートカットは他のショートカットに被らないような設定にしてありますが、 もし他のキー設定と被る場合や、普段もMadRubyを使いたくてもっと 簡単なキー設定にしたい場合は vim_emu/vim_emu_core.xmlEnable Recording Macro にあるキー設定も変更して下さい。

下のデモでは aaaという文字列を検索して移動してAAAと置き換える作業を記憶して 繰り返し実行しています。

<ESC>/aaa<ESC>hqni<BS>AAA<ESC>q@@@@@@@@@uuuuuuuuuuh5@

とキーボードからは入力しています。 検索時に単語が選択されるのを一旦解除するのにhを使ったり、 が逆に検索後、で一気に消したりするところとかも 実際のVimと違いますが、 一応これくらいの変換の作業は繰り返し出来るようになります。 (流石にsed的な変換は無理なのでこの辺の作業はマクロで繰り返しで。)

MadRubyは、最初のqをした所で現れ、

  • n-g
  • iは記憶されず(右下のモード表示から--VIM--が消える)
  • AAA
  • は記憶されず(右下のモード表示へ--VIM--が現れる)

と記憶されqで終了しています。

実用性はともかく、ちょっと、おぉっ、ってなります。

その他の変更点

  • d3wなど、ydcの時にも2-9で移動を数字分だけ出来る様に改善。
  • Visual Modeでライン選択の時、以前は最初に上に向かうとカレント行が除かれたが 最初に上に向かう時だけカレント行も選択する様に変更。
  • RturnはそのままRturnを返す様に変更。
  • H/Lについては意味ない動きしかできないので削除。(ubiquitous_vimを真似てみたものの キーの無駄遣いにしかならないので…)
  • GitHubのレポジトリーバージョンをKeyRemap4MacBookの中に入っているものと かち合わないように変更。
  • ドイツ語キーボードサポート。

インストール

KeyRemap4MacBookが入った状態でvim_emu をcloneしてきて中にあるinstall.shを実行すれば 自分設定のすぐ下にもう1つのVIM Emulationが現れます。

$ git clone https://github.com/rcmdnk/vim_emu
$ cd vim_emu
$ ./install.sh

キーがバッティングするので元から入っているVIM Emulation項目はオフにして下さい。

アンインストールは$HOME/Library/Application Support/KeyRemap4MacBook/ からvim_emu*を消し、private.xmlの下の方に追加された <include path="vim_emu_test.xml"></include>を削除してください。

そのうちKeyRemap4MacBook本体の方にPull Requestしていつの間にか入れてもらおうと思ってます。

Sponsored Links
  1. 2009年に開発が止まっている古いアプリですが、少なくともLionやMountain Lion で動くことは確認しました。 他にも似たようなアプリがありましたが、有料だったり、ショートカットキーで 記憶/再生出来なかったり、マウス操作も記憶してしまって逆に面倒だったり、 で今のところこのアプリが一番良さげです。

  2. MadRuby自体には履歴機能あってメニューバーから過去の操作を再生することも出来ます。 また、操作を保存したり、過去に保存した操作を読み込む事も可能です。

  3. MadRubyの表示が出続けるので忘れる事はないと思いますし、メニューバーからでも ストップすることは出来ます。

Sponsored Links

« coLinuxのインストール App Language ChooserでMail.app等特定のアプリだけ英語設定にする »