Vimでノーマルモードに入るときに英数入力へ切り替えたい
Vimあるあるとして, ノーマルモードでの全角入力があげられると思います.
こんな感じ.
( `Д´)フォオオオオオオオオオ!
ノ#`Д´)ノ⌒┻━┻
Insertモードで全角入力のままEscapeするとこうなります.
この現象の対策としては,
1. 日本語を使わない 英語だけで生きる
英語だけ使って生きるようにすれば, 全角入力を使わずに済みます.
3. Insertモードを抜けた時に, 自動的に全角入力から半角入力に切り替える
頑張ればできる気がします.
Ubuntuを使っているときは, IM-disableなどを使っていました.
今回は3番目の, 入力切替の自動化を試みます.
Vimでノーマルモードに入るときに半角入力へ切り替える
MacVimなら
set imdisable
とすればいいらしいですが, 端末で使うときはダメみたいです.
こちらのブログを参考にすればできます. ブログの名前が素敵です.
http://r7kamura.hatenablog.com/entry/20110217/1297910068
KeyRemap4Macbookでprivate.xmlを好きなように編集すればいいとわかりました.
参考にしたブログ記事の作者の方はCtrl-CをESCAPEとして使っていて,
Ctrl-CをCtrl-C + 英数キーと割り当てるように設定することで,
ESCAPEと同時に半角入力への切り替えを実現しています.
僕はデフォルトのEscapeキーバインド設定であるCtrl-[で設定したいのです.
Ctrl-[ を Ctrl-[ + 英数キーと設定しようとすると, 下のようになります.
autogenの行だけ書き換えました.
<?xml version="1.0"?> <root> <list> <item> <name>LeaveInsMode with EISUU(Terminal)</name> <only>TERMINAL</only> <identifier>private.app_terminal_esc_with_eisuu</identifier> <autogen>--KeyToKey-- KeyCode::BRACKET_RIGHT, VK_CONTROL, KeyCode::BRACKET_RIGHT, VK_CONTROL, KeyCode::JIS_EISUU</autogen> </item> </list> </root>
Control + [ なので, BRACKET_LEFTと書いたら動きませんでした.
EventViewerで確認したら, " [ " を押すと "BRACKET_RIGHT" と表示されました.
何が起きているのですかね. 右左が逆じゃないの.
よくわかりませんが, 思うように動いたのでOKです.
EventViewerで" ] "を押したら BACKSLASHと出ました.
" ] "はBACKSLASHらしいです. もう知りません.
とりあえず, Ctrl-[ でノーマルモードに入るときに英数入力に切り替えられるようになりました.
やったね!
Windowsは窓から投げ捨てるといいと思います.