😀
Vim で IME をいい感じに使う
概要
Vim で期待しない IME のオン、オフを避けるための設定。
vim-jp Slack で質問して、現状このようになった。
履歴
- 2025-08-16
- Qiita の記事 を Zenn で更新
- インサートモードから
<C-c>で抜けるとInsertLeaveが発火しないということなのでModeChangedを使うように変更。
環境
- Vim: gvim 9.1.1634
- Windows 11 24H2
設定
動作 になるような設定を vimrc へ記載。
" インサートモードから抜けるときにIMEの状態を保持して、IMEはオフ
let s:lastiminsert = 0
autocmd vimrc ModeChanged i*:* let s:lastiminsert = &iminsert | setlocal iminsert=0
" 置換モードから抜けるときはIMEの状態を保持しない。
autocmd vimrc ModeChanged R*:* setlocal iminsert=0
" インサートモードに入るときにIMEの状態を反映
autocmd vimrc ModeChanged *:i* let &l:iminsert = s:lastiminsert
動作
凡例:
- IME ON:背景色 Lime
- ポイントの状態:文字色 赤
-
IME がオンの状態の挿入モードからノーマルモードに戻って、再度挿入モードに入ったら IME はオンのまま

-
IME がオンの状態の挿入モードで改行しても IME オンのまま


-
1 文字置換、置換モードに入ったら IME はオフ


-
コマンドラインモードに入ったら IME はオフ

Discussion