本節では、単一の単語またはバッファの一部のスペルをチェックするコマンドについて説明します。これらのコマンドは、Hunspell、Aspell、Ispell、またはEnchantのいずれかのスペルチェッカープログラムがインストールされている場合にのみ動作します。これらのプログラムはEmacsの一部ではありませんが、通常、GNU/Linuxやその他のフリーオペレーティングシステムのいずれかにインストールされています。The Aspell ManualのAspellを参照してください。
スペルチェッカープログラムを1つだけインストールしている場合、本書で説明するコマンドのいずれかを初めて実行すると、Emacsがそれを検出します。複数インストールしている場合は、変数
ispell-program-name
をカスタマイズすることで、どのプログラムを使用するかを制御できます。
地点 (ispell-word)
にある単語の綴りを確認し、修正する。領域がアクティブな場合は、代わりにその領域内のすべての単語に対して行う。
直前のスペル操作が中断された場合は、その操作を継続します (ispell-continue)。
バッファ内のすべての単語のスペルを確認し、修正します。リージョンがアクティブな場合は、代わりにそのリージョン内のすべての単語に対して行います。
バッファ内のスペルを確認して修正する。
該当箇所のスペルを確認し、修正してください。
引用箇所を除き、メールの下書きのスペルチェックと修正を行ってください。
バッファまたはリージョン内のコメントや文字列のスペルをチェックし、修正します。
時点のコメントまたは文字列を確認する。
dictを辞書として使用し、スペルチェッカーのプロセスを再起動してください。
スペルチェッカーのサブプロセスを終了する。
スペル辞書やその他の補完ソース(completion-at-point)に基づき、ポイントより前の単語を完成させてください。
スペルミスのある単語をすべてハイライトするFlyspellモードを有効にします。
コメントと文字列のみFlyspellモードを有効にする。
ポイントの前後にある単語のスペルを確認し、必要に応じて修正するには、M-$ (ispell-word) と入力します。リージョンが有効な場合、M-$ はリージョン内のすべての単語のスペルを確認します。マークとリージョンを参照してください。(一時マークモードがオフの場合、M-$ は常にリージョンを無視してポイントの前後にある単語に対して動作します。一時マークモードの無効化を参照してください。)接頭辞引数を指定して
C-u M-$ を呼び出すと、ispell-continue が呼び出されます。これにより、X
または C-g で中断されたスペルチェック操作(もしあれば)が続行されます。
同様に、コマンド M-x ispell は、スペルチェック領域が有効な場合はその領域を、そうでない場合はバッファ全体に対してスペルチェックを行います。コマンド M-x ispell-buffer と M-x ispell-region は、それぞれバッファ全体または指定領域に対して明示的にスペルチェックを行います。作成中のメールメッセージのスペルをチェックするには M-x ispell-message を使用してください。このコマンドは、インデントされている箇所や他のメッセージからの引用と思われる部分を除き、バッファ全体をチェックします。メールの送信 を参照してください。ソースコードを扱う場合は、M-x ispell-comments-and-strings または M-x ispell-comment-or-string-at-point を使用して、コメントや文字列リテラルのみをチェックできます。
これらのコマンドのいずれかが、誤入力と思われる単語を検出すると、どう対処するかを尋ねます。通常、誤入力単語に近い単語である番号付きのニアミスの一覧が表示されます。その後、1文字の応答を入力する必要があります。有効な応答は以下の通りです。
今度は、表示されたニアミスのいずれかに単語を置き換えてください。各ニアミスには数字が付記されており、その数字を入力することで選択できます。
この単語はスキップしてください—引き続き誤りとして扱いつつ、ここでは変更しないでください。
今度は、単語を new に置換してください。(置換後の文字列は、さらなるスペルミスがないか再スキャンされます。)
単語を new に置換し、必要に応じてバッファ内の他の箇所でも置換できるよう query-replace を行ってください。(置換後、さらにスペルミスがないか再スキャンされます。)
誤った単語を受理する—今回の編集セッションに限り、正しいものとして扱う。
誤った単語を受理する—この編集セッションおよびこのバッファ内に限り、正しいものとして扱う。
この単語を個人用辞書ファイルに登録してください。そうすれば、今後のセッションでも正しく認識されるようになります。
i と同様ですが、辞書補完情報も指定できます。
この単語の小文字版を個人用辞書ファイルに挿入してください。
辞書から word に一致する単語を探してください。これらの単語が新しいニアミスリストとなり、数字を入力することでその中から置換語を1つ選択できます。word ではワイルドカードとして ‘*’ を使用できます。
対話型スペルチェックを中断し、ポインタをチェック対象の単語に残します。その後、C-u M-$ でチェックを再開できます。
インタラクティブなスペルチェックを無効にし、ポインタをスペルチェック開始時の位置に戻してください。
インタラクティブなスペルチェックを無効にし、スペルチェッカーのサブプロセスを終了する。
recursive-edit に入ります(再帰編集レベルを参照)。C-M-c で recursive-edit を終了すると、インタラクティブなスペルチェックが再開されます。これにより、スペルチェックを中断することなくバッファ内のテキストを確認できます。再帰編集中はバッファを変更しないでください。特に、スペルミスのある単語は変更しないでください。recursive-edit を終了すると編集内容が元に戻ってしまうためです。スペルミスのある単語を編集する必要がある場合は、代わりに r または R を使用するか、X を使用してバッファを編集し、その後 C-u M-$ で再開してください。
Emacsをサスペンドするか、選択したフレームをアイコン化する。
オプションの一覧を表示してください。
Ispellにスペル修正内容を記憶させておけば、Abbrevモードが有効なときに自動的に適用されます(Abbrevsを参照)。ispell-save-corrections-as-abbrevsをnil以外の値にカスタマイズすると、スペルミスのある単語を修正するたびに、Emacsはその修正内容をグローバル略語として保存します。すると、Abbrevモードが有効なバッファ内でスペルミスのある単語に続いて単語区切り文字(SPC、カンマなど)を入力するたびに、Emacsはそのスペルミスを修正内容に展開します。置換候補を選択する際にC-uプレフィックス引数を指定することで、この動作を上書きし、特定の修正内容の保存を無効にできます。ispell-save-corrections-as-abbrevsがデフォルト値のnilである場合、プレフィックス引数の意味は反転し、置換候補を選択する前にC-uを入力するとグローバル略語が保存されます。
コマンド M-TAB (completion-at-point) を使用して、ポイントにある単語を補完します。単語の先頭を入力し、次に
M-TAB
と入力して補完候補の一覧から選択します。(ウィンドウマネージャが M-TAB を捕捉する場合は、ESC TAB または C-M-i と入力してください。)
一度起動すると、スペルチェッカーのサブプロセスは何らかの処理が発生するのを待機しながら動作し続け、後続のスペルチェックコマンドがより迅速に完了するようになります。このプロセスを終了させたい場合は、M-x ispell-kill-ispell を使用してください。スペル修正を行う時以外はプロセッサ時間を消費しないため、通常はこの操作は必要ありません。
スペルチェッカーは、標準辞書と個人用辞書という2つの辞書で綴りを確認します。標準辞書は、変数 ispell-local-dictionary、またはそれが nil の場合は変数 ispell-dictionary
で指定されます。両方が nil の場合は、スペルプログラムのデフォルト辞書が使用されます。コマンド
M-x ispell-change-dictionary
は、バッファの標準辞書を設定した上でサブプロセスを再起動し、別の標準辞書を使用するようにします。個人用辞書は、変数 ispell-personal-dictionary で指定されます。それが nil の場合、スペルプログラムは各スペルチェッカー固有のデフォルト場所にある個人用辞書を探します。
通常、スペルチェッカーで使用される辞書は、特定の言語向けのものです。デフォルトの言語は、システムの環境およびロケールに基づいて決定されます。別の言語でテキストのスペルチェックを行いたい場合は、標準辞書と個人用辞書の両方を変更する必要があります。その際は、ispell-change-dictionaryコマンドを使用できます。
Hunspellは、複数の異なる辞書を用いて並列にスペルチェックを行える点が特徴です。この機能を利用するには、特定の辞書の組み合わせでHunspellを使い始める前に、M-x ispell-hunspell-add-multi-dicコマンドを実行してください。このコマンドでは辞書の組み合わせの入力が求められます。組み合わせは、‘en_US,de_DE,ru_RU’のように、言語ごとの辞書名をカンマ区切りで並べた形式で指定します。これにより、その後は辞書を都度変更することなく、これらの言語が混在するテキストのスペルチェックが可能になります。(注意点:複数の言語で同じ文字体系を使用している場合、ある言語でスペルミスのある単語が、別の言語の辞書では正しい綴りとして認識されることがあります。その場合、スペルミスのある単語が見逃される可能性があります。)
単語補完には別の辞書が使用されます。変数 ispell-complete-word-dict
はこの辞書のファイル名を指定します。補完用辞書は、スペルチェックが単語のバリエーションを検出する際に用いる語根や接辞に関する情報を利用できないため、別の辞書である必要があります。言語によっては、スペルチェック用辞書はあっても単語補完用辞書がない場合があります。
Flyspellモードは、入力に合わせてテキストのスペルチェックを自動で行うマイナーモードです。認識できない単語が見つかると、その単語がハイライトされます。現在のバッファでFlyspellモードを切り替えるには、M-x flyspell-mode
と入力してください。すべてのテキストモードバッファでFlyspellモードを有効にするには、flyspell-mode から text-mode-hook を追加してください。フックを参照してください。なお、Flyspellモードはカーソルが移動する先の各単語をチェックする必要があるため、カーソル移動やスクロールコマンドの動作が遅くなります。また、入力や移動を行わなかったテキストは自動的にチェックされません。その場合は
flyspell-region または flyspell-buffer を使用してください。
通常、Flyspellモードでは、入力または修正したスペルミスのある単語だけでなく、変更せずにカーソルを移動させた単語もハイライトされます。ただし、変数
flyspell-check-changes を nil
以外の値にカスタマイズすると、Flyspellモードは何らかの形で入力または編集した単語のみをチェックするようになります。
Flyspellモードで単語がスペルミスとしてハイライトされた際、mouse-2 (flyspell-correct-word)
でその単語をクリックすると、考えられる修正案や操作のメニューが表示されます。このメニューを代わりに mouse-3 で表示させたい場合は、context-menu-mode を有効にしてください。さらに、C-. または ESC TAB (flyspell-auto-correct-word)
ではカーソル位置の単語に対して順次さまざまな修正案が提示され、C-c $ (flyspell-correct-word-before-point)
では考えられる修正案のメニューがポップアップ表示されます。もちろん、スペルミスのある単語を任意の方法で手動で編集して修正することも可能です。
Flyspell
Progモードは、コメントや文字列定数内の単語のみをチェックする点を除けば、通常のFlyspellモードと同様に動作します。この機能はプログラムの編集に便利です。現在のバッファでこのモードを有効または無効にするには、M-x flyspell-prog-modeと入力してください。すべてのプログラミングモードバッファでこのモードを有効にするには、flyspell-prog-modeからprog-mode-hookまでを追加してください(フックを参照)。