やりたいこと
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