Coc.nvimを触ってみようアドベントカレンダー 5日目 – coc-spell-checker
Coc.nvimを触ってみよう Advent Calendar 2021 5日目です。
今回は coc-spell-checker
です。
coc-spell-checker について
cspellのcoc.nvimラッパーで、vimで編集中に自動でスペルチェックを実行してくれます。.vim
フォルダ内に cspell.json
がある場合はそれを優先するため、既存のcspell設定を流用する際に手間いらずです。
coc-spell-checker をインストールする
vimを起動した状態で以下のコマンドを実行します。
:CocInstall coc-spell-checker
使ってみる
ファイルを開くと、以下のようにスペルミスの疑いのある単語がピックアップされます。
これらを直していくわけですが、スペルミスではない独自用語も含まれることがあり、チェックから除外したい単語の取り扱いが肝になってきます。
単語集のようなテキストファイルがある場合は、coc-settings.jsonにて以下のように指定しておきます。
"cSpell.dictionaryDefinitions": [ { "name": "nvim", "path": "/Users/path/to/.dictionary/nvim.txt"} ], "cSpell.dictionaries": [ "nvim" ]
pathで指定しているnvim.txt内に単語を入れることで、チェックから除外が可能になります。
単語集の反映確認
万が一、単語を追加したのにチェックされていなさそう、等の問題に突き当たった場合は以下の手順にて単語集の認識、及び単語がチェックの対象となっているか確認します。
まず、作業ディレクトリ内に.vimフォルダを作成し、その中に以下の内容でcSpell.jsonを追加します。
{ "version": "0.2", "language": "en", "languageSettings": [ { "languageId": "*", "locale": "*", "dictionaries": ["devio"], "dictionaryDefinitions": [ { "name": "devio", "path": "/path/to/.vim/dictionaries/nvim.txt" } ] } ] }
この時の dictionaryDefinitions.[].path
については .vim
以下であれば、フルパスでもcSpell.jsonの相対パスのどちらでも構いません。パス先に今回はnvim.txtを追加し、nvim.txt内に適当な単語を入れます。
echo 'hatenablogcard' > /path/to/.vim/dictionaries/nvim.txt
次に以下のコマンドにてチェックを入れます。
cspell trace hatenablogcard -c .vim/cSpell.json
出力結果が以下のようになっていれば単語集内で判定がなされていることになります。
なお、coc-settings.jsonをcspellの -c
に引数として渡しても判定対象とはなりません。
文書編集中に単語を除外フレーズに追加する
編集中に引っかかった単語を一時的にでも外したい場合は、ビジュアルモードにて該当単語を選択状態にした上で CocCommand cSpell.addWordToWorkspaceDictionary
と入力します。以下のような状態になるはずです。
Enterを押して、単語を調整します。
再度Enterを押すことで追加完了です。単語は作業ディレクトリの .vim/coc-settings.json
内 cSpell.words
に追加されます。
"cSpell.words": [ "nvim" ]
あとがき
導入は手軽でしたが、意外と嵌ったのは独自単語集の追加でした。coc-settings.jsonに定義した辞書設定は cspell trace
の判定に掛からないため、作業ディレクトリ内にcspellの設定に合わせたcSpell.jsonを作成した上でチェックできるようにすると確実です。