Ubuntuでibus 1.5が入ってるよ(sudo apt-get install ibus-mozc
したよ)というごく普通の環境を想定します.
普通はIMEを切り替えるには半角/全角キーを押したり,Alt + ` を押したりします.
これをコンソールから実行してやることが出来ます.
ibus engine 'mozc-jp'# 日本語入力に切り替え
ibus engine 'xkb:us::eng'# 英語配列の英語入力に切り替え
ibus
コマンドの2つ目の引数に指定するべき値は,
ibus list-engine
で調べることが出来ます.
こんなことして何が嬉しいのかというと,Vimでインサートモードから抜けてノーマルモードに戻った時に,勝手に日本語入力をオフにしてて欲しいというのが実現出来るのです.mozc側の設定でEsc押したらIMEをオフにするってのもあるみたいなんですが,どうもそっちが上手く行かなかったので今はとりあえず自分はこのようなアプローチを取ることにしました.
ちなみにそのための.vimrc
の設定は以下の通りです.
call system('type ibus')ifv:shell_error ==0inoremap<Esc><Esc>:call system('ibus engine "xkb:us::eng"')<CR>endif
まずtype ibus
を実行してibus
コマンドの有無を確かめます.
なければv:shell_error
が 0 以外に,あれば 0 になっているはずなのでそれで条件分岐してinoremap
で<Esc>
を<Esc>:call system('ibus engine "xkb:us::eng"')<CR>
に変えてやる感じです.
これもうちょっと頑張れば,IMEの状態を覚えさせておいて,再度インサートモードに入った時にIMEの状態を復元する,とか出来るはずなんですよね.事実そういうのを出来るようにしてるブログのエントリとかをこれ調べてるときに見かけました.
References
ここを参考にしながら,
IMCtrl
って関数便利やなこれ<Esc>
を<Esc>:call IMCtrl(...)<CR>
にしてやったらええんちゃうか?xvkbd
とかxdotool
とかせんでも直接iBus制御する方法あるんちゃうか?IMCtrl
経由せずにsystem('ibus engine ...')
って直接呼んでやったらええんちゃうか?
と紆余曲折をここ数日してました.