25
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

IMEを切り替える方法

Posted at

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')
if v:shell_error == 0
  inoremap <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

ここを参考にしながら,

  1. IMCtrlって関数便利やなこれ
  2. <Esc><Esc>:call IMCtrl(...)<CR>にしてやったらええんちゃうか?
  3. xvkbdとかxdotoolとかせんでも直接iBus制御する方法あるんちゃうか?
  4. IMCtrl経由せずにsystem('ibus engine ...')って直接呼んでやったらええんちゃうか?

と紆余曲折をここ数日してました.

25
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?