読者です 読者をやめる 読者になる 読者になる

300億円欲しい

メジャーリーグのデータ解析します

Vimでノーマルモードに入るときに英数入力へ切り替えたい

vim

Vimあるあるとして, ノーマルモードでの全角入力があげられると思います.

こんな感じ.
f:id:gg_hatano:20131102193912p:plain

( `Д´)フォオオオオオオオオオ!

ノ#`Д´)ノ⌒┻━┻

Insertモードで全角入力のままEscapeするとこうなります.

この現象の対策としては,

1. 日本語を使わない 英語だけで生きる

英語だけ使って生きるようにすれば, 全角入力を使わずに済みます.

2. Vimを使わない

EmacsSublime Textなどに乗り換えましょう.

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は窓から投げ捨てるといいと思います.