やりたいこと
Vimでインサートモード時にIMEをONにし日本語入力を行ったあとで、 ESC などでノーマルモードに入ったときに、自動でIMEをOFFにする
前提条件
-
IMEをFcitxを使用 - ターミナルで
fcitx-remoteコマンドが使用できること
IMEをONにする
$ fcitx-remote -o
IMEをOFFにする
$ fcitx-remote -c
Vimの設定
.vimrc
function! ImInActivate()
call system('fcitx-remote -c')
endfunction
inoremap <silent> <C-[> <ESC>:call ImInActivate()<CR>
これでインサートモードからノーマルモードに切り替わるタイミング(つまり ESC キーや Ctrl+[ の入力時)と同時IMEもOFFになる
おまけ
私は日本語の入力に mozc を使っているが、日本語入力時に(IMEがONの状態のとき)に Shift を押しながらキー入力を行うとローマ字入力に自動で切り替わる機能があります。この機能使用時に全角のローマ字が入力されてしまうことがあります。デフォルトで半角英語を入力したい場合は ~/.config/fcitx/profile を下記のように編集したあとに、 fcitx を再起動すると意図どおりに動作するようになります。
~/.config/fcitx/profile
[Profile]
# FullWidth=True
FullWidth=False