IME ON/OFF でカーソルの色を変える(colorscheme変更に対応)
Vim で編集を行っている際に IME を有効にしているかどうかを視覚的にわかるようにしたい。 ということで、highlight コマンドにてカーソルの強調表示を行うように設定している。
CursorIM のヘルプには以下の行を gvimrc に記述するようにサンプルが載っている。
if has('multi_byte_ime') highlight Cursor guifg=NONE guibg=Green highlight CursorIM guifg=NONE guibg=Purple endif
強調表示設定は colorscheme 設定後に行う必要があるため、上記内容を特定の colorscheme ファイルの最後尾に書いていた。
しかし、これだとその colorscheme を設定した場合しか反映されないため改善を試みた。
結論は gvimrc ファイルに以下の設定を追記することで対応した。
function! s:CursorColor() highlight Cursor guifg=NONE guibg=Green highlight CursorIM guifg=NONE guibg=Purple endfunction augroup ColorSchemeHook autocmd! autocmd ColorScheme * call s:CursorColor() augroup END
gvimrc で colorscheme
コマンドを記述する場合は上記の定義の後に記述しなければ GVim 起動時にカーソルの強調表示が設定されないので注意
autocmd ColorScheme
によってカラースキーマを読み込んだ際に s:CursorColor()
関数が呼ばれ、カーソルの強調表示が設定される。
colorscheme
コマンドを実行する度に s:CursorColor()
関数が呼ばれるため colorscheme を変更した場合もカーソルの強調表示が設定されるようになる。