sifue's blog

プログラマな二児の父の日常

SSHを介してVimを使う人に感動的なESCキーを押すとESCキーが効きつつIMEがオフになる設定(Google日本語入力とVimの相性は最強!)

Vimをお使いの皆さん、こんにちわ。
Vimを使って日本語のコメントやドキュメントを書かなきゃいけな人をいつも悩ますのが、IMEのモードの問題です。


(IMEオン, IMEオフ) x (挿入モード, コマンドモード, ビジュアルモード) の、この全6パターンを意識しながら操作するのは非常に間違いやすいです。特に日本語を挿入モードで書いたあと、コマンドモードに抜けるとよくIMEがオンになっていて、あうぅ。。とよくなってしまう。


KaoriYaさんのMacVimやGVimを使っている方は幸せです。

set imdisable

という設定をvimrcに書く手があります。これで挿入モードから抜ける際、入る際に必ずIMEがオフになります。


問題は、コンソールやiTermなどからSSHを介してサーバー上のVimを使っている場合です。この設定が効きません。そりゃ普通はサーバー上にIMEはありませんので仕方ありません。なので、この問題がなかなか解消されなかったのです。
中にはこの機能のためにiTerm2の自家製ビルドを作っている方すらいます。


しかし!この由々しき問題を解決してくれたのがGoogle日本語入力です!インストールしてデフォルトのIMEに設定の後、

環境設定... > 一般タブ > キー設定 > キー設定の選択

にて、一度、キーの設定を「ことえり」を選択した後、編集のコンボボックスから新しいエントリーを追加して以下のように、Escapeを押すと「キャンセル後IMEを無効化」というエントリーを全状態に対して6個追加すると、あら不思議!

なんと、Escapeで挿入モードを抜けると必ずIMEがオフになります。これは他のキーのリマップのソフトで設定するのと違ってEscapeキー自体の機能が失われません!
MacOSX LionのiTerm2では検証済みです。Macの場合はターミナルからではダメですし、MacVimではを2回押す必要があります。あと、WindowsXPTeraTermでも、を2回押さねばダメでした...残念、それでもMacVimやTeraTermにはIMEのオンオフでカーソルの形状を変えるオプションがあるので二回押しでも便利かもですが。


これで、SSHを介してVimを使っている方はかなり楽に日本語の入力をサーバー上で行うことができるようになるのではないでしょうか。


ぜひ、ことえりMS-IMEから乗り換えてGoogle日本語入力で快適なVimライフを送ってみてください!


追伸
なお、自分のvimrcは、GitHubにて公開しており、MacOSX, CentOS, FreeBSD, MiracleLinuxにて共有して使っています。日々精進中ですが、もしよかったら見てみてください。