Vim で自動的に set spell を行う
先日 Vim のスペルチェックに日本語を除外する機能が実装されました。
せっかくなのでスペルチェックをいい感じに使ってみたいと思います。
さすがに常にスペルチェックを有効にするとちょっと鬱陶しいので以下の様な設定をしてみました。
[ソース]
set spelllang+=cjk " トリガーがONになっていたら set spell を行う function! s:set_spell() if get(b:, "set_spell_trigger", 0) && &modifiable let &spell = 1 unlet b:set_spell_trigger endif endfunction " バッファの内容が変更されるか保存された時にスペルチェックを行う " ただし、実際に有効になるのは CursorHold のタイミング " また、カーソル移動を行えば無効にする augroup my-setspell autocmd! autocmd BufWritePost,TextChanged,TextChangedI * let b:set_spell_trigger = 1 autocmd CursorHold * call s:set_spell() autocmd CursorMoved * if &spell | set nospell | endif augroup END
最初は直接 set spell を行っていたのですが、それだとレスポンスが気になったので、CursorHold のタイミングで行うようにしてみました。
あとカーソル移動するとスペルチェックを無効にしています。
常にハイライトされていると鬱陶しいので、一瞬だけチェックできればよいかなーと。
まだ、スペルチェックのよさは感じませんが、スペルチェックをするタイミングとしてはよい感じかなーと。