VS Code のメジャーな拡張機能で、英単語の誤植を波線で指摘してくれる。英語以外の言語にも対応しているが、日本語には非対応。
以下のリンクからインストールすることができる。
仕事で Ruby を書いていて、# frozen_string_literal: true
の frozen
というスペルを、間違えて fronzen
とタイポしたままリモートに取り込んで、しばらく気づかなかった上にコピペで他のファイルにまで拡散してしまったことがきっかけ。
これを会社の Slack で報告したところ、チームメンバーからこの拡張機能を教えてもらい秒でインストールした。
一般的な英単語や有名な固有名詞 (google
など) はあらかじめ登録されているが、プロジェクト固有の名詞などは指摘の対象となってしまう。そのような単語を指摘しないようにするための設定も用意されている。
以下の 2 通りの追加方法がある
shift
+ cmd
+ P
を押すとコマンドパレットが起動する。入力欄に add words to
まで入力すると、以下の 8 つの項目が候補として表示される。
これらのどれを選んでも単語は登録されるが、どのファイルに追加されるのか、またその単語帳の適用範囲はどこまでなのかについては グループ分け 以降で後述する。
なお、8 項目あるが、実際には全く同じ挙動をする項目があり、同じ挙動のものはまとめて紹介する。同じ挙動のものはどれを使っても良い。
Add Words to CSpell Configuration
だけは、筆者の環境では No matching configuration found.
というエラーが出て登録できなかった。そのため未検証。
主に settings.json
または cspell.json
を編集することにより設定することができる。それぞれの特徴は以下の通り。
settings.json
cSpell
が必要 (グループ分け 以降の記述例参照)cspell.json
cSpell
は不要 (グループ分け 以降の記述例参照)settings.json
に記述すると単語帳の部分が肥大化するので単語帳を別ファイルに分けたいときにおすすめ<PROJECT_ROOT>/.vscode/settings.json
に、そのプロジェクトでのみ適用される VS Code の設定をしている人がチームメンバー内にいる場合におすすめ (プロジェクトのディレクトリ以下で管理する場合)単語を追加するファイルの場所や、コマンドパレット経由での追加方法はいくつもあるのだが、分類すると以下の 3 つに分けられる。
それぞれのグループごとに、適用範囲、コマンドパレットでのコマンド名、保存先ファイル名、記述例を説明する。コマンドパレット経由の場合、複数ファイルがあるうちの、「コマンドパレット経由」の列に「○」がついている行のファイルに単語が追加される。
VS Code 全体
保存先ファイル名 | コマンドパレット経由 |
---|---|
$HOME/Library/Application\ Support/Code/User/settings.json |
○ |
$HOME/.vscode/cspell.json |
{
"cSpell.userWords": [
"dotfiles"
]
}
{
"userWords": [
"dotfiles"
]
}
$HOME/.vscode/cspell.json
は実態ファイルでないと正しく動作しないことを確認している。バグなのか仕様なのかは不明。
$HOME/Library/Application\ Support/Code/User/settings.json
のほうはシンボリックリンクでも問題なく動作することを確認済み。
ファイルを変更してもすぐに反映されない。リンクを削除して、もう一度、リンクを作成すると反映される。正直これでは使い物にならない。
そもそも設定が反映されない。
そのプロジェクトのディレクトリ以下のみ
保存先ファイル名 | コマンドパレット経由 |
---|---|
<PROJECT_ROOT>/.vscode/settings.json |
○ |
<PROJECT_ROOT>/.vscode/cspell.json |
|
<PROJECT_ROOT>/cspell.json |
{
"cSpell.words": [
"dotfiles"
]
}
{
"words": [
"dotfiles"
]
}
.gitignore
に追加しない限りは、そのプロジェクトで管理することになる。
メリットは、チームメンバー全員でそのプロジェクト固有の単語を共有できること。デメリットは、単語を追加するたびに差分が発生してしまい、そのためだけに git commit
して git push
して PR を作成して承認をもらってマージする、という手順が発生すること。
ワークスペース全体
厳密には異なるが、ワークスペースはウィンドウのことだと思って良い。VS Code のウィンドウを 2 つ開いている場合は 2 つのワークスペースがあることになる。そのうちのどちらかのみに適用することができる。
保存先ファイル名 | コマンドパレット経由 |
---|---|
$HOME/Library/Application\ Support/Code/Workspaces/<WORKSPACE_ID>/workspace.json |
○ |
{
"cSpell.words": [
"dotfiles"
]
}
<WORKSPACE_ID>
は 1625624235245
のような値で、複数のワークスペースを識別する VS Code 内部の値のようだ。
ここに保存されると dotfiles リポジトリやプロジェクトリポジトリで管理するのが難しいのでおすすめしない。また、どこに保存されたのかがわかりづらいため、現状の単語帳を把握するのも難しい。実際、筆者もこのファイルを探すのに、ホームディレクトリ以下を、登録した単語で grep したが、探すのにとても苦労した。
そもそも <WORKSPACE_ID>
からワークスペースを特定するのも難しいため、ファイルを手動で書き換えるようなものではない。