Vim でファイル編集中にスペルミス(typo)を検出するために vim-codespell を導入してみた

Vim

Contents

はじめに

Vim でブログのエントリを作成したり、技術ドキュメントを作成したりしています。

技術系の内容をまとめていると、アルファベットの単語の登場頻度が多いわけですが、ちょっとしたスペルミスをすることがちらほらあります。

エントリやドキュメントであれば、スペルミスを舌としてもまだマシなのですが、ソースコードにスペルミスがあると(例えばクラス名やメソッド名)それが使われてしまって後戻りできない、ということも時々あります。

これはイカンということで英語のスペルミスを検出するためのプラグインを探して導入してみました。

検証環境

$ uname -moi
x86_64 MacBookPro16,1 Darwin

$ nvim --version | head -n 2
NVIM v0.4.4
Build type: Release

shinglyu/vim-codespellを導入する

Google 検索して最初に見つかった Github 上の Vim プラグインが以下でした。

したがってこれを導入し使ってみることにしました。

shinglyu/vim-codespellのインストール

Github の Install の説明を見るのが一番確実です。

2021-06-20 時点だと、以下の工程を踏むと書かれています。

  1. [aspell][http://aspell.net/] というツールの導入
  • Mac なら brew install aspell を実行
  1. Vim プラグインとして、 shinglyu/vim-codespell を導入

プラグインのインストール方法についてはここでは省略します。

Vim のプラグインは Vundle / vim-pathogen / vim-plug / NeoBundle / dein.vim など色々ありますので導入していない場合には検討ください。

shinglyu/vim-codespellを使ってみる

早速使ってみました。
前回のブログエントリのもととなる Markdown を NeoVim で開きます。

その後、 :Codespell コマンドを実行します。

幸いタイポがないためあまり良くわかりませんが、一部の単語が赤色で表示されるようになりました。
辞書登録されていないものはハイライト表示される模様です。

shinglyu/vim-codespellに自分で辞書登録してみる

AnsibleKubernetes といった技術単語が不正な文字扱いとなってしまっているので、こちらを辞書登録します。

まずはプラグインが配置されているディレクトリに移動します。

ちなみに僕の場合ですが、 SpaceVim を導入しているためプラグインの配置場所がちょっと変わっています。

$ cd ~/.cache/vimfiles/repos/github.com/shinglyu/vim-codespell

$ ls -la
drwxr-xr-x    - genzouw 20 6 09:26 .git/
drwxr-xr-x    - genzouw 20 6 09:21 dict/
drwxr-xr-x    - genzouw 20 6 08:37 doc/
drwxr-xr-x    - genzouw 20 6 08:37 plugin/
.rw-r--r-- 2.1k genzouw 20 6 08:37 README.md

次に dict ディレクトリに移動します。

$ cd dict

*.list という拡張子のファイルがいくつかありますが、これが辞書ファイルになります。登録されているものはスペルミス扱いにしない、という仕様のようです。

既存のファイルと同じように自分用の辞書を追加します。
my.list というファイルを作成し、 ansiblekubernetes という単語を追加します。

$ echo ansible >> my.list
$ echo kubernetes >> my.list

作成後は build.sh を実行すれば、*.list ファイルを纏めて cs.dict というファイルに変換してくれます。

$ ./build.sh

これでエラーとならないはず、、、と思っていたら、僕の環境ではこれだけでは正しく動作しませんでした。
SpaceVimを使っている環境だからでしょうか?以下の一手間を加えて初めて正しく反映されるようになりました。

cp \
  ~/.cache/vimfiles/repos/github.com/shinglyu/vim-codespell/dict/cs.dict \
  ~/.cache/vimfiles/.cache/init.vim/.dein/dict/cs.dict

SpaceVim のキャッシュファイルなのでしょうか?あまり仕組みがわかっておらず。

ひとこと

導入して気づいたのですが、以下のプラグインのほうがスター数が圧倒的に多く、早速乗り換えしようと思い始めています。^^;

Vim