Vim以外でVimする: Mac編 で作ったvim_emuをアップデートしました。
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 http://www.wingsforpigs.com/MadRuby/MadRuby.html
という良さげなキー操作記憶再生アプリを見つけたので
これを使ってマクロ機能を実装してみました
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と違ってqaのaの様にマクロの収納先は指定しないでqだけで記憶を開始します。 従って記憶できる操作は1つだけです 2。 記憶中にNormal Modeに戻ってqで終了するわけですが、 この間に他のアプリに移ってしまっても、永遠とマクロを記憶し続けるので 気をつけて下さい 3。
再生に関しても収納先の指定が無いので@だけで再生します。 注意として、@を繰り返して押す場合、⇧も離して繰り返し 押さないと続けてマクロを上手く入力出来ません。
複数回実行したい場合は2~9までの数字を押した後に @を押せば数字分だけ実行します。
MadRubyのショートカットは他のショートカットに被らないような設定にしてありますが、
もし他のキー設定と被る場合や、普段もMadRubyを使いたくてもっと
簡単なキー設定にしたい場合は
vim_emu/vim_emu_core.xml
のEnable 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
など、y
、d
、c
の時にも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していつの間にか入れてもらおうと思ってます。