Up: 目次   [Index]


スペルチェック

*spell.txt*	For Vim バージョン 8.1.  Last change: 2019 Aug 16


		  VIMリファレンスマニュアル       by Bram Moolenaar

スペルチェック

1. はじめに|spell-quickstart|
2. スペルチェックの注意點|spell-remarks|
3. スペルファイルの生成|spell-mkspell|
4. スペルファイルの形式|spell-file-format|

{|+syntax| 機能をコンパイル時に無效にした場合には利用することができない}

Note:
他にも vimspell プラグインがある。そのプラグインを入れてゐれば ":help vimspell" を實行することでそれについて調べることができる。しかし、おそらくそのプラグインを削除し、代はりにオプション ’spell’ を使ひたいと思ふだらう。そちらのはうがうまくいく。

1. はじめに

このコマンドで、スペルチェックがオンになる:

:setlocal spell spelllang=en_us

これはオプション ’spell’ をオンにし、アメリカ英語のチェックを指定する。

認識されない單語は以下のやうにハイライトされる:

SpellBad認識されない單語|hl-SpellBad|
SpellCap頭文字が大文字になつてゐない單語|hl-SpellCap|
SpellRareまれな單語|hl-SpellRare|
SpellLocal選擇された地域では閒違つた綴り|hl-SpellLocal|

Vim は單語の綴りのみをチェックし、文法はチェックしない。

もしも ’mousemodel’ オプションが "popup" に設定されてカーソルが閒違つた單語の上にあるか、オプションが "popup_setpos" に設定されてマウスポインタが閒違つた單語の上にあるなら、ポップアップメニューは閒違つた單語を置き換へるサブメニューが含まれるやうになる。

Note:
これはポップアップメニューの表示を遲くする。

Note: GTK では: メニューが表示されるまではマウスの右ボタンを離してはいけない。さうしないと機能しない。

次の綴りの閒違つた單語を探すには:

]s

カーソルの後の、次の綴りの閒違つた單語に移動する。コマンドの前に count を指定することで、繰り返しができる。’wrapscan’ が適用される。

[s

"]s" と同樣だが後方檢索を行ひ、カーソルより前の綴りの閒違つた單語を探す。2 行に渡つた單語は認識しないため、閒違ひとしてハイライトされてゐない單語で止まることがある。行頭が大文字になつてゐない單語では止まらない。

]S

"]s" と同樣だが、閒違つた單語のみで止まり、まれな單語や他の地域の單語では止まらない。

[S

"]S" と同樣だが、後方檢索を行ふ。

單語をあなた自身の單語リストに追加するには:

zg

カーソルの下の單語を正しい (good) 單語として、’spellfile’ の最初のファイルに追加する。コマンドの前に count を指定することで、’spellfile’ 內の項目を指定することができる。count として 2 を指定すると、2 番目の項目が使はれる。

ビジュアルモードで選擇された文字は單語として追加される (スペースを含む!)。カーソルが閒違つた綴りとしてマークされた文章の上にある時、そのマークされた文章が使はれる。さうでなければ、單語ではない文字で分けられたカーソルの下の單語が使はれる。

もしその單語が明示的に別のスペルファイルで閒違つた單語としてマークされてゐるなら、その結果は豫測できない。

zG

"zg" と同樣であるが、その單語を內部單語リスト |internal-wordlist| に加へる。

zw

"zg" と同樣であるが、閒違つた (wrong) 單語としてマークする。もしその單語がすでに ’spellfile’ にある場合は、コメント行に變更される。それらを取り除くには |spellfile-cleanup| を參照する。

zW

"zw" と同樣であるが、その單語を內部單語リスト |internal-wordlist| に加へる。

zuw または
zug

|zw| や |zg| を undo して、’spellfile’ の項目からその單語を削除する。count は |zg| と同樣に使はれる。

zuW または
zuG

|zW| や |zG| を undo して、內部單語リストからその單語を削除する。count は |zg| と同樣に使はれる。

:[count]spe[llgood] {word}

|zg| と同樣に、{word} を正しい單語として ’spellfile’ に加へる。count が無いときは最初の名前が使はれ、count に 2 を指定したときは 2 番目の項目が使はれる。以下同樣。

:spe[llgood]! {word}

|zG| と同樣に、{word} を正しい單語として內部單語リストに加へる。

:[count]spellw[rong] {word}

|zw| と同樣に、{word} を閒違つた (wrong) 單語として ’spellfile’ に加へる。count が無いときは最初の名前が使はれ、count に 2 を指定したときは 2 番目の項目が使はれる。以下同樣。

:spellw[rong]! {word}

|zW| と同樣に、{word} を閒違つた (wrong) 單語として內部單語リストに追加する。

:[count]spellr[are] {word}

|zw| と同樣に、{word} を稀な單語として ’spellfile’ に加へます。count が無いときは最初の名前が使はれ、count に 2 を指定したときは 2 番目の項目が使はれます。

これらは非常に珍しいコマンドであり、このための直感的なコマンドは既に使はれてゐるため、單語を稀とマークするノーマルモードのコマンドはありません。必要に應じて次のやうにマッピングを追加できます。例:

nnoremap z?  :exe ':spellrare  ' . expand('<cWORD>')<CR>
nnoremap z/  :exe ':spellrare! ' . expand('<cWORD>')<CR>

|:spellundo|, |zuw| または |zuW| はこれをもとに戾すことができます。

:spellr[rare]! {word}

|zW| と同樣に {word} を稀な單語として內部單語リストに追加します。

:[count]spellu[ndo] {word}

|zuw| と同樣である。[count] は |:spellgood| と同樣に使はれる。

:spellu[ndo]! {word}

|zuW| と同樣である。[count] は |:spellgood| と同樣に使はれる。

上記のコマンドで ’spellfile’ に單語を追加した後、 その關聯付けられた ".spl" ファイルは自動的に更新され再讀み込みされる。もし手動で ’spellfile’ を變更するなら |:mkspell| コマンドを用ゐる必要がある。このコマンドの順序でたいていふまくいく:

:edit <'spellfile' にあるファイル>
(スペルファイルに變更を加へる)
:mkspell! %

spellfile’ の形式に關する詳細は下記の |spell-wordlist-format| を參照。

內部單語リストは ’spell’ がセットされた全てのバッファで使はれる。內部單語リストは蓄へられず、Vim が終了する時に失はれる。また ’encoding’ がセットされた時にクリアされる。

閒違つた單語に對してのサジェストを調べるには:

z=

カーソルの下や後の單語に對して正しい綴りの單語を提案する。これはまた閒違つた單語としてハイライトされてゐない單語に對しての代はりを調べることもできる。例へば、その後の單語が閒違つてゐる場合など。ビジュアルモードでハイライトされたテキストは置換される單語として見なされる。結果は、置換されようとしてゐる單語との類似度でソートされる。これには長い時閒が掛かることがある。うんざりした場合は CTRL-C を打つこと。

count なしでこのコマンドを使ふ場合、選擇肢がリストアップされ、選びたい選擇肢の番號を入力することができる。置き換へたくない場合は <Enter> を押す。また、マウスを使つて選擇肢をクリックすることもできる (マウスがノーマルモードで使はれ、行の折り返しがない時のみ働く)。キャンセルするには最初の行 (ヘッダー) をクリックする。

リストアップされた提案はふつうハイライトされた閒違つた單語を置き換へる。そのサジェストは時々他のテキストを含むことがあるが、その場合は置き換へられるテキストが "<" の後にリストアップされる。

count を用いた場合、プロンプトは出ずにその提案が使はれる。例へば、"1z=" は常に最初の提案を利用する。

verbose’ が 0 以外の場合、閒違つた單語との類似度を示すスコアがサジェストと共に表示される (高いスコアは、違ひが大きいことを示す)。單語が置換された後は、リドゥコマンド "." はその單語の置換を繰り返す。これは、"ciw" の後に正しい單語を入力し <Esc> を入力したやうに動作する。これは、單語の閒にスペースを含まないタイ語やその他の言語に對しては動かない。

:spellr[epall]

|z=| によつて行はれた置換を、現在のウィンドウの全てのマッチする單語に對して繰り返す。

插入モードでは、カーソルが閒違つた綴りの單語の後にある場合、サジェストを見つけるために CTRL-X s を使ふことができる。これは插入モード補完のやうに動作する。次の提案を使ふには CTRL-N を、戾るには CTRL-P を使ふこと。|i_CTRL-X_s|

オプション ’spellsuggest’ は候補のリストがどのやうに生成、ソートされるかに影響する。|'spellsuggest'| を參照せよ。

オプション ’spellcapcheck’ は文の最初の單語が大文字で始まるかをチェックするのに用ゐる。これはファイルの最初の單語には働かない。文の直後に改行があるとき、次の行のハイライティングが後回しにされるかもしれない。必要であれば |CTRL-L| を使用せよ。また、’spelllang’ が設定される時にどのやうに自動で設定されるのかについては |set-spc-auto| を參照せよ。

Vim は見つけた正しい單語を數へる。これはサジェストする單語をソートするのに使はれる: 前に見つけた單語は小さな評價、よく見られる單語は評價を大きくする。添付ファイル內の COMMON 項目は共通する單語を定義するのに使ふことができる。そのため、この機構はまた新規もしくは小さいファイルでも機能する |spell-COMMON|。

2. スペルチェックの注意點

性能

Vim はオンザフライのスペルチェックをする。スペルチェックを速くするために單語リストはメモリにロードされる。だがこのために多くのメモリ (1Mbyte 以上) が使はれる。さらに、單語リストがロードされてゐる時に著しい遲延が生じるかもしれない。これは’spell’ が既に設定されてゐたのに、’spell’ を設定する時や ’spelllang’ を設定する時に發生する。遲延を最小限にするには各單語リストが 1 回だけ讀み込まれるやうにする。さうすれば、’spelllang’ が空になる時か ’spell’ がリセットされる時に單語リストは削除されない。’encoding’ を設定して全ての單語リストが再讀み込みされる時に、上のやうにまた遲延に氣づくかもしれない。

地域

單語はそれぞれの地域で綴りが異なるかもしれない。例へば、英語は少なくともこれらの差異がある。

en全ての地域
en_auオーストラリア
en_caカナダ
en_gbイギリス
en_nzニュージーランド
en_usアメリカ

ある地域では使はれないが別の地域では使はれる單語は SpellLocal |hl-SpellLocal| でハイライトされる。

常に言語名や地域名には小文字を使ふ。

|zg| や他のコマンドで單語が追加された時、その單語は常に全ての地域に追加される。これは ’spellfile’ を手動で編輯することで變更できる。|spell-wordlist-format| を參照せよ。

Note:
spellfile’ のファイル內で指定される地域は、’spelllang’ 內の全てのエントリが同じ地域を明示してゐるときに使はれるだけである (その .spl 名により明示されたファイルはカウントしない) ことに注意。

特有の例外: ドイツ語ではこれらの特別な地域が使はれる:

de全てのドイツ語單語を許容する
de_de新舊正書法
de_19舊正書法
de_20新正書法
de_atオーストリア
de_chスイス

特有の例外: ロシア語ではこれらの特別な地域が使はれる:

ru全てのロシア語單語を許容する
ru_ru"IE (e)" 文字を用ゐる單語
ru_yo"YO (ё)" 文字を用ゐる單語

イディッシュ語は特有の文字が使はれるため、"utf-8" エンコーディングを使ふ必要がある。もしもあなたが latin1 を使つてゐるのなら、Vim は代はりに (ローマ字に) 字譯されたイディッシュ語を使ふ。もしも utf-8 で字譯されたイディッシュ語を使ひたいのであれば、"yi-tr" を使ふこと。一覽:

encodingspelllang
utf-8yiイディッシュ語
latin1yiローマ字に字譯されたイディッシュ語
utf-8yi-trローマ字に字譯されたイディッシュ語

中國語、日本語、あるいはその他の東アジアの文字に對するスペルチェックはサポートされてゐないため、これらの文字は通常、エラーとしてマークされる。’spelllang’ が "cjk" を含んでゐる場合、これらの文字はエラーとしてマークされなくなる。これは、いくつかのアジアの單語が含まれるテキストを、スペルチェックを有效にして編輯する際に有用である。

スペルファイル

Vim は ’runtimepath’ のディレクトリの中の "spell" といふ名前のサブディレクトリにあるスペルファイルを探す。ファイル名は LL.EEE.spl のやうになる:

LL言語名
EEEencoding’ の値

"LL" の値は ’spelllang’ の値が使はれるが、地域名は除外される。

例:

spelllangLL
en_usen
en-rareen-rare
medical_camedical

runtimepath’ の中の最初のファイルだけがロードされる。これが成功した場合、LL.EEE.add.spl といふ名前のファイルが追加でロードされる。追加ファイルは、見つかつたものが全てロードされる。

スペルファイルが見つからなければ、自動コマンドイベント |SpellFileMissing| が發生する。これによつてスペルファイルをダウンロードする |spellfile.vim| プラグインを呼び出せる。

加へて、’spellfile’ の名前に關聯したファイルは讀み込まれる。これらは |zg| や |zw| で正しい單語や閒違つた單語を追加するファイルである。

例外:

例へば、以下の値が設定されてゐる場合:

runtimepath’ が "~/.vim,/usr/share/vim81,~/.vim/after"
encoding’ が "iso-8859-2"
spelllang’ が "pl"

Vim は以下を探す:

  1. ~/.vim/spell/pl.iso-8859-2.spl
  2. /usr/share/vim81/spell/pl.iso-8859-2.spl
  3. ~/.vim/spell/pl.iso-8859-2.add.spl
  4. /usr/share/vim81/spell/pl.iso-8859-2.add.spl
  5. ~/.vim/after/spell/pl.iso-8859-2.add.spl

ここでは、1. が見つからず、2. が見つかつたと假定してゐる。

もし ’encoding’ が "latin1" ならば Vim は以下を探す:

  1. ~/.vim/spell/pl.latin1.spl
  2. /usr/share/vim81/spell/pl.latin1.spl
  3. ~/.vim/after/spell/pl.latin1.spl
  4. ~/.vim/spell/pl.ascii.spl
  5. /usr/share/vim81/spell/pl.ascii.spl
  6. ~/.vim/after/spell/pl.ascii.spl

これはこれらが見つからないことを想定する (ポーランド語は non-ASCII 文字を拔くと意味を成さない)。

EBCDIC 向けのスペルチェックは現在サポートされてゐない。

現在の ’encoding’ でスペルファイルが利用できないかもしれない。スペルファイルの作成の仕方については |spell-mkspell| を參照せよ。"iconv" でスペルファイルを變換するのは機能しないだらう!

Note:
VMS ではファイル名によるトラブルを避けるため、".{enc}.spl" は "_{enc}.spl" に變更されてゐる。

もしまさしく同じ名前の ".spl" ファイルがあり、それの最後に ".sug" が付いてゐないのであれば、このファイルはより良いサジェスションを與へるのに使はれる。メモリの使用量を減らすため、サジェスションが作られる前には讀み込まれない。

スペルファイルを讀み込む時、Vim はそれが正しくフォーマットされてゐるかチェックする。もしエラーが生じたなら、そのファイルは不完全であるか、變更されてゐるか、Vim の他のバージョン向けのものなのかもしれない。

スペルファイルのクリーンアップ

|zw| コマンドは ’spellfile’ 內に存在するエントリをコメント行に變へる。これは每囘新しいファイルに書き込むことを避けるが、ファイル內の結果は長くなるだけで短くなることはない。すべての ".add" スペルファイル內のコメント行をクリーンアップするには次のやうにする:

:runtime spell/cleanadd.vim

これは "##" ではじまるものを除いて、すべてのコメント行を削除する。保持しておきたいコメントには "##" を使はう。

好きなときにいつでもこのスクリプトを呼び出すことができる。直近で變更されたファイルのアップデートをスキップする變數を提供してゐる。ファイルが變更されてからクリーンアップされるまでの經過する秒數を設定する。例へば、この 1 時閒で變更されることのなかつたファイルのみをクリーンアップするには次のやうにする:

let g:spell_clean_limit = 60 * 60

このデフォルトは 1 秒。

單語

Vim は單語を認識するのに定型的な方法を使ふ。これは ’iskeyword’ とは獨立してゐるので、ヘルプファイル內で機能するし、’iskeyword’ 內に ’-’ のやうな文字が含まれてゐる言語でも機能する。單語の文字は ’encoding’ に依存する。

單語の文字テーブルはメインの .spl ファイルに保存される。それゆゑ、.spl ファイルが生成する時に現在のロケールが何であるのかが問題になる!それゆゑ .add.spl ファイルは含まない單語テーブルを含まない。

ディジットではじまる單語のために、單語のすべてを認識するまではディジットは無視される。それゆゑ、もし "3D" が單語で、"D" が單語でなければ、"3D" は單語として認識される。しかし、"3D" が單語でなければ、"D" は不正としてマークされるだけである。0x12ab や 0X12AB の 16 進數は認識される。

單語の組み合はせ

スペースを含む單語のスペルチェックが可能。それらによつて使はれた時に無效な單語を評價するのに使はれる。例へば、"et al."。これはまた "the the" を評價したり、ハイライトするのに使はれる。

スペースの數は無關係だ。多くの場合で改行があるかもしれない。しかしながら、これはスペルミスのチェックを開始する場所を見つけるのを困難にする。1 行の變更をしてその行が再描畫されただけでは、Vim は前の行を見ない。それゆゑ、"et" が前の行の最後にあると "al." はエラーと見なされる。また、"the<CR>the" と入力すると、最初の行が再描畫されるまでハイライトされない。直ちに再描畫をするには |CTRL-L| を使ふ。"[s" は改行を持つ單語にも止まる。

改行があると、Vim は ’*’, ’>’ や ’"’ のやうな文字をスキップする。そのため、C, シェル, Vim コードでのコメントはスペルチェックをすることができる。

構文ハイライト

構文ハイライトを使用するファイルでは、どこでスペルチェックを行ふべきか指定することができる:

1. どこでも既定
2. 指定の要素"contains=@Spell" を使用する
3. 指定の要素以外どこでも"contains=@NoSpell" を使用する

@NoSpell クラスタを追加する 2 番目の方法は、スペルチェックを再度無效にするだらう。これは例へば @Spell をプログラムのコメントに追加し、チェックすべきではないアイテムを @NoSpell に追加するために使ふことができる。シンタックスアイテムにないテキストについては |:syn-spell| を參照。

Vim script

スペルに關する Vim script を書きたいと思ふと、これらの函數が役に立つことが分かるだらう:

spellbadword()カーソル下の閒違つたつづりの單語を見つける
spellsuggest()正しいつづりの候補を得る
soundfold()同音 (sound-a-like) の單語を得る

spellcapcheck’ の自動設定

spelllang’ オプションがうまく設定されたあとは、Vim は ’runtimepath’ から "spell/LANG.vim" ファイルを讀み込む。"LANG" は最初のコンマ、ドット、またはアンダースコアーまでの ’spelllang’ の値。これは言語のための特別なオプション、とりわけ ’spellcapcheck’ を設定することができる。

ディストリビューションはこれらのファイルがいくつか含んでゐる。これらが何をしてゐるのかを見るには次のコマンドを使ふ:

:next $VIMRUNTIME/spell/*.vim

Note:
デフォルトのスクリプトは初期値が變更されてゐるならば、’spellcapcheck’ を設定しないことに注意。これはその時のユーザーが好む値を想定する。

二重スコア付け

"double" 方式のスコア付けを選擇するために ’spellsuggest’ オプションを使用できる。この機構は、綴り閒違ひには 2 種類あるといふ原則に基づいてゐる:

  1. 單語の綴りは知つてゐるが、何らかのミスタイプをする場合。(文字の入れ替り・文字の拔け・文字の混入)といふ差異は、小さく完全に閒違つてゐるとわかる。
  2. 單語の綴りを知らず、單語が正しく聞こえるやうにタイプする場合。差異は大きく、單語は後にあげる sound-folding に似てゐる。

これら 2 つの閒違ひのスコアは大きく異なるので、リストをそれぞれ使ひ組み合はせる。

sound-folding は遲く、言語を知つてゐる人は閒違ひのやうなものを 2 度としたくはないだらう。それゆゑ ’spellsuggest’ はスコアリングの方法を選擇することができる。

3. スペルファイルの生成

Vim はつづりのためのバイナリフォーマットを使用する。このことにより單語リストの讀み込みを大幅に速くし、單語リストを小さく保つ。 Vim スペルファイルを Myspell 用に .aff.dic ファイルから生成することができる。Myspell は OpenOffice.org と Mozilla で使はれてゐる。OpenOffice の .oxt ファイルは .aff.dic ファイルを含んだファイルを zip されてゐる。次の場所で見つけることができる:

http://extensions.services.openoffice.org/dictionary

もしも動作しないなら、古い OpenOffice 2 のファイルが使はれてゐるのかもしれない:

http://wiki.services.openoffice.org/wiki/Dictionaries

プレーンテキストを使ふこともできる。結果は同じで、あなたの見つけた單語リストに依存する。

Aap (www.a-a-p.org) をインストールするなら、runtime/spell/??/ ディレクトリのレシピを使ふことができる。Aap は注意深くフィアルをダウンロードし、Vim に必要とされるパッチを適用し、.spl ファイルをビルドする。

ロケールが正しく設定されてゐるか確認しよう。さうでないと Vim は大文字/小文字の區別ができなくなる。ロケールが利用できない (例へば Unix 上で MS-Windows コードページを使つてゐる) と、.aff ファイル |spell-affix-chars| にテーブルを追加する。もし .aff フィアルがテーブルを定義してゐないと、現在有效な單語テーブルのスペリングが使はれる。スペリングが有效でなければ、Vim は推測しようとする。

:mksp[ell][!] [-ascii] {outname} {inname} ...

單語リストから Vim スペルファイルを生成する。例:

:mkspell /tmp/nl nl_NL.words

{outname} が ".spl" で終つてゐる場合、出力ファイル名として使はれる。さうでなければ、地域名を除いた "en" のやうな言語名となる。"{outname}.{encoding}.spl" といふファイルがあるとしよう。ここで {encoding} は ’encoding’ オプションの値。

出力ファイルがすでに存在する場合は、上書きするために [!] を使はなければならない。

[-ascii] 引數が與へられた場合、非 ASCII 文字を持つ單語はスキップされる。結果のファイルは "ascii.spl" で終る。

{inname}.aff や {inname}.dic への入力は、Myspell フォーマットにすることができる。{inname}.aff が存在しなければ、プレーン單語リストの名前として {inname} が使はれる。

複數の {inname} 引數を使ふと、ひとつの Vim スペルファイルの中に地域の組み合せを與へることができる。例:

:mkspell ~/.vim/spell/en /tmp/en_US /tmp/en_CA /tmp/en_AU

これはひとつの en.spl ファイルの中に、US と CA と AU のための英單語リストを合はせる。8 つの地域までを合はせることができる。 上記コマンドで出現する .aff ファイルのはじめにある REP と SAL 項目が使はれる。|spell-REP| |spell-SAL|

このコマンドは多くのメモリを使用する。最適な單語ツリーを見つけるために必要とするのだ (ポーランド語、イタリア語、ハンガリー語は數百メガバイト必要)。最終的な結果は壓縮されるのでとても小さい。メモリを使ひ果たすのを防ぐため、壓縮は適宜行はれる。これは ’mkspellmem’ オプションで切り替へることができる。

バッファ內でスペルファイルが書き込まれて使はれはじめると、自動的に再讀み込みされる。

:mksp[ell] [-ascii] {name}.{enc}.add

上記の ":mkspell" と似てゐる。入力ファイルとして {name}.{enc}.add を使ひ、同じディレクトリ內に ".spl" を付加して出力する。

:mksp[ell] [-ascii] {name}

上記の ":mkspell" と似てゐる。入力ファイルとして {name} を使ひ、同じディレクトリ內に ".{enc}.spl" を付加して出力する。

Vim は重複してゐる單語の數を報告する。これは單語リスト中の誤りであるかもしれない。頻繁ではないが、これらが連續することを囘避するために、同じ基本語のための接頭辭と接尾語の差異が使はれる (例へばチェコ語はこれを使ふ)。Vim に重複するすべての單語をレポートしてもらひたければ、’verbose’ オプションを設定する。

Vim で使ふために Myspell スペルチェッカーの單語リストを變更したいなら、次のやうにすることをお薦めする:

  1. Myspell スペルチェッカーから xx_YY.affxx_YY.dic ファイルを入手する。
  2. これらのファイルを xx_YY.orig.affxx_YY.orig.dic のやうにコピーする。
  3. 良くない語を除くために xx_YY.affxx_YY.dic ファイルを變更し、足りない單語を加へ、FOL/LOW/UPP の單語を定義したりする。配布されてゐる "*.diff" ファイルも使ふことができる。
  4. Vim を正しいロケールで起動し、Vim スペルファイルを生成するために |:mkspell| を使ふ。
  5. runtimepath’ のスペルディレクトリに書き込むなら、":set spell spelllang=xx" でスペルファイルを試してみる。その他に書き込むなら ":set spelllang=xx.enc.spl" を使ふ。

Myspell ファイルがアップデートされたとき、差異をマージすることができる:

  1. xx_YY.new.aff や xx_UU.new.dic として、新しい Myspell スペルチェックファイルを取得する。
  2. 變更點を見るために Vimdiff を使ふ:
    vimdiff xx_YY.orig.dic xx_YY.new.dic
    
  3. xx_YY.dic の好みの變更點を持つてくる。xx_YY.aff の變更點も必要とするかもしれない。
  4. xx_YY.new.dic を xx_YY.orig.dic へ、xx_YY.new.aff を xx_YY.orig.aff へリネームする。

スペルファイルのバージョン

スペルチェックは Vim の比較的新しい機能なので、より多くの言語をサポートするために .spl ファイルのフォーマットを變更することができる。Vim はスペルファイルの妥當性をチェックし、をかしなところをレポートする。

E771: Old spell file, needs to be updated

このスペルファイルはあなたの使つてゐる Vim にとつては古いものなので、.spl ファイルをアップデートする必要がある。

E772: Spell file is for newer version of Vim

このスペルファイルはあなたの使つてゐる Vim よりも新しい Vim で作成されたものなので、Vim をアップデートする必要がある。

E770: Unsupported section in spell file

このスペルファイルは最新の Vim 用に作成されてゐて、動作するには必要とされるセクションを含んでゐる。この場合はおそらく、あなたの Vim をアップグレードするのが良い考へだ。

スペルファイルのダンプ

もし何らかの理由で、現在使つてゐるスペルファイルでどんな單語がサポートされてゐるかをチェックしたい場合、以下のコマンドを使用できる:

:spelld[ump]

新しいウィンドウを開いて、現在妥當であるすべての單語で埋め盡す。複合語は含まれない。

Note:
いくつかの言語では Vim がメモリ不足になるやうな、非常の大きな結果となるかもしれないことに注意。

:spelld[ump]!

":spelldump" と同樣、單語の數を含む。これは畫面がアップデートする閒に見つかつた單語の數。COMMON アイテムの中にある單語は 10 から數へられる。

單語リストのフォーマットは |spell-wordlist-format| が使はれる すべての單語を含んでゐる、ひとつの .spl ファイルを生成するために、":mkspell" で讀み込むことができるやうにするべきだ。

spelllang’ へのすべてのエントリが同じ地域、もしくはまつたく地域を使つてゐる場合、地域情報はダンプワードの中に含まれてゐる。さうでなければ、現在の地域のための單語のみが含まれ、"/regions" のない行が生成される。

.spl ファイルの名を持つコメント行は、その .spl ファイルから生成された單語の上位のヘッダーとして使はれる。

スペルファイルがないとき

もしあなたの使用してゐる言語向けのスペルファイルが利用できないのであれば、エラーメッセージを受け取るだらう。しかし、"spellfile.vim" プラグインを有效にしてゐるのであれば、スペルファイルのダウンロードをあなたに提案するだらう。ただ指示に從ふだけ。それは書き込むファイルはどこにあるのかといふ質問をするだらう (ファイルの置き場所は ’runtimepath’ の中にあつて書き込み可能なディレクトリでなければならない)。

このプラグインはスペルファイルを探すためのデフォルトの場所を Vim FTP サーバー上に持つてゐる。もしも他の場所やプロトコルを使ひたいのなら、g:spellfile_URL 變數をスペルファイルを持つてゐるディレクトリに設定する。|netrw| プラグインはファイルを取得するために使はれる。URL の具體的なシンタックスを見てみよう。例:

let g:spellfile_URL = 'http://ftp.vim.org/vim/runtime/spell'

特殊文字をエスケープする必要があるかもしれない。

このプラグインは一度だけ、言語のダウンロードについてのみ質問するだらう。もしも再試行したいのなら、とにかく Vim を再起動するか、もしくは、g:spellfile_URL を別の値にする (例へば先頭にスペースを追加する)。

"spellfile.vim" プラグインを使ふのを囘避するためには vimrc ファイルを次のやうにする:

let loaded_spellfile_plugin = 1

プラグインを使ふ代はりに、自身で missing ファイルを扱ふために |SpellFileMissing| 自動コマンドを定義することができる。次のやうに使へる:

:au SpellFileMissing * call Download_spell_file(expand('<amatch>'))

それゆゑ、<amatch> アイテムは 言語名を含んでゐる。他に重要な値は ’encoding’。これはすべてのエンコーディングがそれ自身のスペルファイルを持つてゐるからだ。2 つの例外がある:

デフォルトの "spellfile.vim" プラグインはこの自動コマンドを使ふ。もしも後で自分の自動コマンドを定義するなら、これを無效にするために ":au! SpellFileMissing" を使ひたいかもしれない。プラグインが讀み込まれる前に自動コマンドを定義した場合はこれを警告し、また何もしないだらう。

Note:
SpellFileMissing 自動コマンドはユーザーが編輯してゐるバッファを變更や破毀してはいけないことに注意。

4. スペルファイルの形式

これは單語リストを作成、管理する人が使ふファイルのフォーマットである。

Note:
ここでは辭書 ("dictionary") といふ單語を使ふのを避ける。スペルチェックのゴールは (本のやうな) 辭書を書くやうなものとは違ふからだ。スペルチェックのために、OK である單語のリストが必要になる。それゆゑ、ハイライトされるべきではない。人と會社の名前は辭書內には現れることはないだらう。しかし、單語リストの中には現れる。そして、共通のミススペルとしてまれに古い單語が使はれる。これらは辭書に現れるけれども、單語リストには現れない。

2 つのフォーマットがある: それは單語の率直なリストと接辭壓縮を使つたリストだ。接辭壓縮を使つたファイルは Myspell (Mozilla と OpenOffice.org) で使はれる。2 つのファイルが必要で、1 つは .aff、もう 1 つは .dic の擴張子を持つファイルだ。

率直な單語リストのフォーマット

單語は 1 行ごとに現はれなければならない。これが必要とされることのすべてだ。

加へて次の項目が評價される:

例:

# 單語リストの例コメント
/encoding=latin1ファイルのエンコーディング
/regions=uscagb地域 "us", "ca" や "gb"
exampleすべての地域の單語
blah/12"us" と "ca" 地域の單語
vim/!誤つた單語
Campbell/?3地域 3 "gb" での珍しい單語
’s mornings/=ケースを保つた單語

Note:
"/=" が使はれたときに、すべてが大文字の同じ單語は無視されることに注意。 これは自動的にケースを保つたものしてマークされた大文字小文字が混ざつた單語とは異なる。これらの單語はすべてが大文字であるやうに見えるだらう。

.AFF と .DIC ファイルのフォーマット

2 つのファイルがある: 基本の單語リストと接辭ファイルだ。接辭ファイルは言語の設定を指定し、接辭を包含することができる。接辭は十分な單語リストを得るために、基本單語を變更するのに使はれる。このことは特にポーランド語のやうな言語では單語數を著しく減らす。これは接辭壓縮 (affix compression) と呼ばれる。

基本の單語リスト接辭ファイルは、":mkspell" コマンドで結び付けられ、その結果はバイナリのスペルファイルになる。すべての前處理が終了すると、このファイルの讀み込みは速くなる。バイナリのスペルファイルのフォーマットはソースコード (src/spell.c) に記述されてゐる。しかし、このことについて知る必要があるのは開發者だけだ。

前處理はまた、私達が Myspell スペルチェック言語ファイルを取得し、Vim の單語リストが作られる前に變更することを許す。これらのツールは "src/spell" ディレクトリで見つけることができる。

接辭と單語リストファイルのフォーマットは、Myspell スペルチェックが使ふもの (Mozilla と OpenOffice.org のスペルチェッカー) に基いてゐる。說明書は以下で見つけることができる:

http://lingucomponent.openoffice.org/affix.readme

Note:
接辭は大文字小文字を區別することに注意。これは說明書からははつきりとわからない。

Vim はかなり多數のおまけをサポートしてゐる。これらは下記の |spell-affix-vim| で說明されてゐる。この試みは他のスペルチェッカーと互換性を保つやうに作られてゐるので、同じファイルを使ふこともできる。Myspell スペルチェックを超えるプロジェクトのひとつとして Hunspell スペルチェックがある (http://hunspell.sf.net)。

單語リストのフォーマット

行番號をつけたちよつとした例:

11234
2aan
3Als
4Etten-Leur
5et al.
6’s-Gravenhage
7’s-Gravenhaags
8# word that differs between regions
9kado/1
10cadeau/2
11TCP,IP
12/the S affix may add a ’s’
13bedel/S

最初の行には單語の數が含まれてゐる。Vim はこれを無視するが、ここに無い場合はエラーメッセージを受け取る。

これに續くのは 1 行につき 1 つの單語。行の終はりの空白は無視され、その他の空白は問題となる。エンコーディングは接辭ファイル內で指定される |spell-SET|。

コメント行は ’#’ か ’/’ ではじまる。8 行目と 12 行目を參照。

Note:
單語のうしろにコメントを置くことは認められてゐないことに注意:

someword   # このコメントはエラーになる!

單語のうしろにはオプションのスラッシュとフラグがある。これらフラグのほとんどは、その單語で使ふことのできる接辭を示す文字である。.aff ファイルの SFX や PFX 行で指定されてゐる。|spell-SFX| と |spell-PFX| を參照。Vim では接辭ファイルの FLAG 項目で、他の形式のフラグを使つてよい |spell-FLAG|。

單語が小文字のみの場合、大文字で始まる單語にもマッチするだらう。

單語が大文字を含んでゐる場合、その場所に大文字が必要とされてゐることを意味する。その場所が小文字である同じ單語はマッチしない。他の文字が大文字である場合もマッチしない。

すべてが大文字の單語はいつも OK になるだらう。

單語リストマッチするマッチしない
alsals Als ALSALs AlS aLs aLS
AlsAls ALSals ALs AlS aLs aLS
ALSALSals Als ALs AlS aLs aLS
AlSAlS ALSals Als ALs aLs aLS

KEEPCASE の接辭 ID は まつたく同じ單語のみのマッチ指定に使ふことができる。下記の |spell-KEEPCASE| を參照。

Note:
5 から 7 行目は單語ではない文字が使はれてゐることに注意。單語にはどのやうな文字でも含めることができる。テキストをチェックしてゐる際に、單語の前後に單語ではない文字が現れた時は單語のみにマッチする。Myspell スペルチェックでは、單語ではない文字で始まる單語はたぶん動作しないだらう。

12 行目では單語 "TCP/IP" が定義されてゐる。スラッシュには特別な意味があるので、代はりにコンマが使はれる。これは接辭ファイルの SLASH アイテムに定義されてゐる。|spell-SLASH| を參照。

Note:
この SLASH アイテムが無いと、單語は "TCP,IP" となるだらう。

接辭 (AFFIX) ファイルフォーマット

.aff ファイルのコメント行は ’#’ で始まる:

# コメント行

引數の固定された引數をもつアイテムはコメントとして續けることができる。引數が無い場合に限り空白を含むことができる。 コメントは "#" から始まらなければならない。例:

KEEPCASE =  # このフラグで單語の大文字小文字を固定する

エンコーディング

接辭ファイルは "iconv" によつてサポートされてゐるエンコーディングであれば、どのやうなものでも良い。しかしながらいくつかの場合で、現在のロケールはまた、プロパティは |:mkspell| が呼び出された時に設定されるべきだ。加へて、FOL/LOW/UPP 行はこの |spell-FOL| の要求を削除する。

エンコーディング事項の何よりもまず前にエンコーディングは指定されるべきだ。エンコーディングは接辭ファイルと辭書ファイルのどちらにも適用される。これは SET 行において成される:

SET utf-8

エンコーディングは ":mkspell" が使はれた時に、’encoding’ オプションの値とは異なつてもよい。Vim は ’encoding’ の全てを變換し、’encoding’ のためのスペルファイルを生成するだらう。 もしも ’encoding’ に適合してゐない文字が使はれてゐると、エラーメッセージを受け取るだらう。

マルチバイトのエンコーディングが使はれてゐる場合、より多くの異なつた接辭フラグを使ふことができる。しかし、Myspell スペルチェックはこれをサポートしてゐない。それゆゑ、あなたはこれをいいかげんに使はうとは思はないだらう。互換性のために 8-bit エンコーディングを使ふ。

情報

接辭ファイルのエントリは、スペルファイルへ情報を追加するのに使ふことができる。フォーマットに制限はないが、正しいエンコーディングであるべきだ。

NAME言語名
VERSION1.0.1 with fixes
HOMEhttp://www.myhome.eu
AUTHORJohn Doe
EMAILjohn AT Doe DOT net
COPYRIGHTLGPL

これらのフィールドは .spl ファイルにそのままの狀態で置かれる。|:spellinfo| コマンドは info を閱覽するために使ふことができる。

:spelli[nfo]

現在のバッファのために使はれてゐるスペルファイルの情報を表示する。

文字テーブル

8-bit エンコーディングを使用してゐる時、接辭ファイルは單語の文字が何であるかを定義するべきだ。これはどうしてかといふと、":mkspell" が使はれたシステムはこのエンコーディングのロケールをサポートしてゐないかもしれないし、isalpha() が動作しないだらうからだ。例へば Unix 上で "cp1250" を使ふとか。 接辭ファイルの 3 行は必要だ。簡單な例:

FOLáëñ
LOWáëñ
UPPÁËÑ

3 行のすべては正確に同じ文字番號を持つてゐなければならない。

"FOL" 行は case-folded 文字を指定する。これらは大文字小文字を區別しない單語の比較に使はれる。ほとんどのエンコーディングでは小文字の行と同じである。

"LOW" 行は lower-case 文字を指定する。大部分は "FOL" 行と同じである。

"UPP" 行は大文字を持つ文字を指定する。この文字は "FOL" と同じ場所にある文字とは異なる大文字である。

例外はジャーマンシャープエス ß に役に立つてゐる。大文字のバージョンは "SS" だ。これは FOL/LOW/UPP 行の中に含まれてゐるべきであり、そのため、單語の文字として認識されるのだが、3 行の全てで ß 文字を使ふ。

{譯メモ: ジャーマンシャープエス (German sharp s) とは?エスツェット (Eszett) と呼ぶもので、s と z の合字とのこと。ドイツ語で使はれてゐる。小文字が ß (U+00DF) で、大文字は ẞ (U+1E9E) となつてゐる。ベータ β (U+03B2) とは違ふよ。}

ASCII 文字は省略されるべきだ。Vim は常に同樣にこれらを扱ふ。エンコーディングが UTF-8 の時、單語文字の指定は必要ない。

Vim はいくつもの言語のために、同じファイルをスペルチェックに使ふことができる。これらは ’spelllang’ オプションに列記することができる。ゆゑに、同じエンコード用のすべてのスペルファイルは同じ單語文字を使はなければならない。さうでなければ、これらをエラーなしに結合することができない。

もしも單語テーブルが異なるといふ警告 E763 を受け取つたなら、".spl" スペルファイルをアップデートする必要がある。ファイルをダウンロードした場合、あなたが使用するスペルファイルすべての最新版を取得しよう。もしも 1 つの言語だけを使つてゐるなら、例へばドイツ語、最新の英語スペルファイルもダウンロードしよう。さうでなければ、|:mkspell| で再度 .spl ファイルを生成しよう。それでもまだエラーがあるのであれば、使用してゐる .aff ファイルの FOL, LOW と UPP 行を確認しよう。

"-ascii" 引數で生成される XX.ascii.spl スペルファイルは文字テーブルを含まないだらう。そのため、どのやうなエンコーディングのスペルファイルとも結合することができる。.add.spl ファイルはまた、テーブルを含むことはできない。

中閒語の文字

いくつかの文字は、それが 2 つの普通の單語文字の閒で使はれてゐるなら、單に單語の文字だとみなされることになつてゐる。一例はシングルクォートだ: これはしばしばテキストを引用するのに使はれる。それゆゑ一語の文字としては認められない。しかしこれが單語文字の閒に現れた時、單語の一部にならなければならない。これは they’are のやうなスペルミス檢出するのに必要だ。they’re となるべきだが、"they" と "are" はそれ自身が單語なので、氣づかれないだらう。

これらの文字は .aff ファイルの MIDWORD で定義される。例:

MIDWORD	'-

フラグのタイプ

フラグはある單語と共に使はれる接辭や單語の他の特徵を明示するのに使はれる。通常はシングルキャラクタのフラグが使はれる。これは受け入れられるフラグの數、特に 8 ビットエンコーディングを制限する。より多くの接辭が使はれるなら、FLAG 項目が使はれる。とりうる値:

FLAG long2 文字フラグを使ふ
FLAG num1 から 65000 までの數値を使ふ
FLAG caplongA-Z を除く 1 文字フラグ、A-Z からはじまる 2 文字フラグを使ふ

"FLAG num" では、接辭リストの數値はコンマで區切られてゐる必要がある: "234,2143,1435"。この方式は非效率的であるが、ファイルをプログラムで生成する場合に便利だ。

"caplong" を使ふとき、2 文字フラグはすべて大文字からはじまる: "Aa", "B1", "BB" など。これはもつとも一般的なアイテムのために 1 文字フラグを使ふのに、そしてまれなアイテムのために 2 文字フラグを使ふのに便利だ。

Note:
UTF-8 を使用してゐる場合、65000 までの文字だけがフラグとして使はれるだらう。

Note:
"num" や "long" を使用してゐる時でさへ、フラグの數値を混ぜることができ、接頭辭は約 250 に制限される。

接辭

通常の PFX (接頭辭) と SFX (接尾辭) 行がサポートされてゐる。(Myspell のドキュメントもしくは Aspell のマニュアルを參照: http://aspell.net/man-html/Affix-Compression.html)。

槪要:

SFX L Y 2
SFX L 0 re [^x]
SFX L 0 ro x

最初の行はヘッダーで 4 つのフィールドを持つてゐる:

SFX {flag} {combine} {count}
{flag}接尾辭に使はれる名前。たいていは 1 文字だが、他の文字も使ふことができる。|spell-FLAG| を參照。
{combine}’Y’ か ’N’ である。’Y’ の場合、單語+接尾辭は接頭辭を持つことができる。’N’ の場合、接頭辭を持てない。
{count}次に續いてゐる行數。もしもこの數値が閒違つてゐると、エラーメッセージを受け取るだらう。

PFX のためのフィールドはこれとまつたく同じ。

續く行の基本的なフォーマットは:

SFX {flag} {strip} {add} {condition} {extra}
{flag}最初の行で使はれてゐる {flag} と同じでなければならない。
{strip}基本語から削除された文字。文字が實際にあるならチェックせず、(バイトの) 長さだけが使はれる。これは {condition} のより良いマッチで、他の方法ではをかしなことが生じる。もしも {strip} の長さが基本語と同じかそれ以上なら、接尾語は使はれないだらう。{strip} が 0 の場合は何も取り除かない。
{add}{strip} を削除した後の基本單語に加へられた文字。オプションにフラグが續く ’/’ がある。このフラグは單語に接辭を付け加へる。|spell-affix-flags| を參照。
{condition}單純なパターン。これが基本單語にマッチした時にだけ、その單語のために接尾辭使はれるだらう。通常、これは異なる末尾の單語のための {add} や {strip} フィールドとは異なり、1 つの接尾文字を使ふためのものだ。{condition} が . (ドット) の場合は條件はない。

パターンは次のものを含む:

  • リテラル文字。
  • [] 內の文字セット。[abc] は a, b と c にマッチする。[a-c] の範圍のためにダッシュを使へるが、これは Vim に特有のもの。
  • ^ から始まる文字セットは、明示された文字を補完するものを意味する。[^abc] は a, b と c を除いたすべての文字にマッチする。
{extra}オプションの特別なテキスト:
# commentコメントは無視される
-Hunspell スペルチェックはこれを使ふ。無視される。

PFX 向けにはフィールドについては同じだが、{strip}, {add} と {condition} は單語のはじめに適用する。

Note:
Myspell スペルチェックは關聯情報の後にあるどんな特別なテキストも無視する。Vim はこのテキストを "#" で始めるために必要とする。そのためミスは氣づかれずには濟まない。例:

SFX F 0 in   [^i]n      # Spion > Spionin
SFX F 0 nen  in         # Bauerin > Bauerinnen

しかしながら、Myspell スペルチェック向けに書かれた接辭ファイル中のエラーの多くを囘避するために、IGNOREEXTRA フラグを追加することができる。

どうも Myspell スペルチェックでは接辭名が一度ならず何度も出現することが認められてゐるやうだ。これはまた閒違ひかもしれないので、Vim は 特別な "S" をチェックする。この機能を使ふ Myspell スペルチェックのための接辭ファイルは、どうやら次のフラグを持つてゐる。例:

SFX a Y 1 S
SFX a 0 an .

SFX a Y 2 S
SFX a 0 en .
SFX a 0 on .

接辭フラグ

これは Hunspell スペルチェック由來の機能: この接辭はフラグを明記するだらう。基本語を明示するフラグと同じやうに動作する。フラグは基本語に接辭 (制限はある) を加へるやうに適用する。例:

SFX S Y 1
SFX S 0 s .

SFX A Y 1
SFX A 0 able/S .

辭書が "drink/AS" を含んでゐると、次の單語が適合する:

drink
drinks          S suffix を使ふ
drinkable       A suffix を使ふ
drinkables      A suffix を使ひ、それから S suffix を使ふ

一般に、接尾辭のフラグは基本語のフラグに付加される。どちらのフラグも單語に接尾辭を加へるために使はれる。しかし、基本語のフラグは接尾辭のために使はれるのは、次を除いて 1 度だけである。その例外とは、雙方が結合をサポートしてゐる時に、雙方の 1 つの接頭辭と 1 つの接尾辭が使はれる。

特に、接辭フラグは次のために使はれる:

IGNOREEXTRA

通常 Vim は ’#’ ではじまらない特別なフィールドにはエラーを與へる。これは氣づかれずに進行してゐるエラーを囘避する。とはいへ、Myspell スペルチェックや Hunspell スペルチェック用に作成されたいくつかのファイルは、特別なフィールドを持つエントリを多く含んでゐるかもしれない。たくさんのエラーを囘避するためには IGNOREEXTRA フラグを使ふ。

CIRCUMFIX

CIRCUMFIX フラグは同時に付加されなければならない接頭辭と接尾辭を意味する。もしも接頭辭が CIRCUMFIX フラグを持つのなら、CIRCUMFIX フラグの接尾辭のみが追加される。そしてその反對も。代替としては接辭を指定し、その接辭に 2 つのフラグを與へることだけである: それは必要とされる接頭辭と NEEDAFFIX フラグである。|spell-NEEDAFFIX|

PFXPOSTPONE

接辭ファイルが多くの單語に適用する非常に多くの接頭辭を持つてゐる場合、全ての單語リストをメモリ內でビルドするのは不可能である。これはヘブライ語 (滑ての單語リストはギガバイトを超える) に適用する。この場合、適用されてゐる接頭辭は後まはしにされなければならない。これはスペルチェックの動作を遲くする。これは .aff ファイルの次のキーワードで示される:

PFXPOSTPONE

途切れた文字列やフラグのない接頭辭だけが延期されることができる。途切れた文字列やフラグのある接頭辭は單語リストに含まれたままだらう。もしも途切れた文字列が 1 文字で、加へられた文字列の最後の文字と同じならば、小文字を除いて例外です。それゆゑ、途切れた文字列が大文字で始まる單語を續けることは認められてゐる。

スラッシュ付きの單語

スラッシュは .dic ファイルで基本語と接辭語や他のフラグを區切るのに使はれる。惡いことに、これは單語中にスラッシュを使へないことを意味する。そのため、"‘TCP/IP’" は單語ではなく、"‘IP’" フラグをもつ "‘TCP’" といふことになる。單語にスラッシュを含めるためには、その前にバックスラッシュを置く: "‘TCP\/IP’"。單語中にバックスラッシュを使ひたいといふ稀な場合があるなら、バックスラッシュを 2 つ續ける必要がある。それ以外のバックスラッシュの使用は、今後の擴張のために豫約されてゐる。

大文字小文字を保つ單語

接辭ファイル內の KEEPCASE 行は、大文字小文字を保つ單語のために使はれる接辭名を定義するのに使はれる。例:

KEEPCASE =

このフラグは Myspell スペルチェックではサポートされてゐない。これは大文字小文字問題があることを意味する。もしも文章のはじめの單語が大文字で始まつてゐないのならば、これを使ふことができる。例:

單語リストマッチするマッチしない
’s morgens/=’s morgens’S morgens ’s Morgens ’S MORGENS
’s Morgens’s Morgens ’S MORGENS’S morgens ’s morgens

フラグはまた、全てが大文字の文章で單語がマッチすることを囘避するのに使はれる。

稀な單語

接辭ファイル內の RARE 行は、稀な單語のために使はれる接辭名を定義するのに使はれる。例:

RARE ?

稀な單語は誤りの單語とは異なつたハイライトがされる。これは言語向けの正しい單語のために使はれるのだが、めつたに使はれず、入力ミスとなる。同じ單語が正しい單語として見つかると、稀な單語としてはハイライトされないだらう。

このフラグはまた接辭として使はれる。そのため、接辭の付いた基本語が稀な單語であることを除き、基本語は稀な單語ではない |spell-affix-flags|。しかしながら、もしも單語が他の方法 (例:他の領域) で正しい單語として現れたなら、稀な單語としてマークされない。

誤りの單語

接辭ファイル內の BAD 行は、誤つた單語のために使はれる接辭名を定義するのに使はれる。例:

BAD !

これは他では正しいであらう單語を除外するのに使はれる。例へば、.dic ファイル內の "the the" である:

the the/!

ひとたび誤つた單語としてマークされると、同じ單語が正しいものであるとしても戾すことはできない。

フラグはまた單語に接辭を適用する。そのため、これは關聯する單語群の全部を誤つたものとしてマークするのに使はれる。

FORBIDDENWORD は BAD とほとんど同じやうに使ふことができる。Hunspell スペルチェックと互換。

NEEDAFFIX フラグは單語が接辭と共に使はれることを要求するのに使はれる。單語それ自身は正しい單語ではない(接辭が空でない限り)。例:

NEEDAFFIX +

複合語

複合語は .dic ファイル內で見られる單語を連結することによつて作られた長い單語です。繋げられてゐるかもしれない單語を明示するために文字が使はれる。この文字は單語のうしろの接辭のリストに置かれる。この文字をここではフラグと呼びたい。明らかに、これらのフラグは接辭の ID で使はれてゐるどんなものとも異なつてゐなければならない。

Myspell スペルチェック互換の方式は COMPOUNDFLAG で明示した 1 つのフラグを使ふ。このフラグを持つすべての單語は任意の順番に結合する。これはどの單語が最初にくるのか制禦がないことを意味する。例:

COMPOUNDFLAG c

合成語がどのやうに合成されるのかを明示するより進んだ方法は、複數のフラグを使ふことだ。これは Myspell スペルチェックの 3.0 とは互換性がない。例のやうにはじめよう:

COMPOUNDRULE c+
COMPOUNDRULE se

最初の行は "c" フラグの單語は任意の順番で繋がれることを定義してゐる。2 番目の行は、"s" フラグの單語 1 つと "e" フラグの單語 1 つからなる合成語を定義してゐる。次の內容の辭書からは:

bork/c
onion/s
soup/e

次の單語を作ることができる:

bork
borkbork
borkborkbork
(etc.)
onion
soup
onionsoup

COMPOUNDRULE 項目は何度も目にするかもしれない。引數は 1 つもしくはそれ以上のグループを作りあげる。それぞれのグループは次のやうになる:

1 つのフラグ例: c
[] 內のそれぞれのフラグ例: [abc]

任意で次の記號が使へる:

*ゼロもしくはそれ以上現れる例: sm*e
+1 回もしくはそれ以上現れる例: c+
?ゼロもしくは 1 回のみ現れる例: x?

これは正規表現の文法と似てゐる(が同じではない!)。次にいくつかの例をあげる:

COMPOUNDRULE x+x xx xxx など
COMPOUNDRULE yzyz
COMPOUNDRULE x+zxz xxz xxxz など
COMPOUNDRULE yx+yx yxx yxxx など
COMPOUNDRULE xy?zxz xyz
COMPOUNDRULE [abc]zaz bz cz
COMPOUNDRULE [abc]+zaz aaz abaz bz baz bcbz cz caz cbaz など
COMPOUNDRULE a[xyz]+ax axx axyz ay ayx ayzz az azy azxy など
COMPOUNDRULE sm*ese sme smme smmme など
COMPOUNDRULE s[xyz]*ese sxe sxye sxyxe sye syze sze szye szyxe など

特別な例: 2 つの語と 1 つのダッシュからの合成を許す:

.aff ファイルで:

COMPOUNDRULE sde
NEEDAFFIX x
COMPOUNDWORDMAX 3
COMPOUNDMIN 1

.dic ファイルで:

start/s
end/e
-/xd

これは單語 "start-end" は認めるが、"startend" は認めない。

さらに含まれるルールには次のやうなものがある。これ以上のフラグについては拔きにして、接頭辭を持つ單語は他の單語の後には結合されない。そして、接尾辭を持つ單語は單語の前には結合されない。そのため、接辭は複合語の中には現れない。これは |spell-COMPOUNDPERMITFLAG| で變更することができる。

NEEDCOMPOUND フラグは單語が複合語の一部として使はれることを要求するのに使はれる。單語それ自身は正しい單語ではない。例:

NEEDCOMPOUND &

ONLYINCOMPOUND は 嚴密に NEEDCOMPOUND とは同じではない。Hunspell スペルチェックとの互換性をサポートする。

合成するのに使はれる單語の最小文字數は COMPOUNDMIN で指定される。例:

COMPOUNDMIN 5

省略された時は最小値はない。それよりも、明らかに短い單語から合成フラグを省くだけでよい。この機能は Myspell スペルチェックとの互換性のためにある。

複合語の中に結合されうる單語の最大値は COMPOUNDWORDMAX で指定される。例:

COMPOUNDWORDMAX 3

省略されたときに最大値はない。すべての複合單語を適用する。

特定のフラグを持つ單語の制限を設定するために、COMPOUNDRULE 內の項目を確認する。ここではどうやら多すぎる單語を許可しないやうに思はれる。

複合語が含まれいてるかもしれない音節の最大値は COMPOUNDSYLMAX で指定される。例:

COMPOUNDSYLMAX 6

SYLLABLE の項目がなければ效果はない。COMPOUNDSYLMAX がないと、音節の數に制限はない。

もしも COMPOUNDWORDMAX と COMPOUNDSYLMAX の雙方が定義されてゐるのなら、そして基準の 1 つとして適合するのなら、複合語は認められる。それゆゑ、COMPOUNDWORDMAX 單語までで作られた、もしくは COMPOUNDSYLMAX 音節までを含んでゐるかのどちらかだ。

COMPOUNDFORBIDFLAG は 1 つの接辭で使はれるフラグを指定する。接辭を加へる單語は複合語の中で使ふことができないことを意味する。例:

affix ファイル:

COMPOUNDFLAG c
COMPOUNDFORBIDFLAG x
SFX a Y 2
SFX a 0 s   .
SFX a 0 ize/x .

辭書:

word/c
util/ac

これは "wordutil" と "wordutils" は認めるが、"wordutilize" は認めない。

Note:
これは延ばされた接頭辭にはまだ作用しないことに注意。

COMPOUNDPERMITFLAG は 1 つの接辭で使はれるフラグを明示する。接辭を加へる單語はまた、接辭が單語の途中で終る、ある程度の複合語の中で使ふことができることを意味する。このフラグがないと認められない。

Note:
これは延ばされた接頭辭にはまだ作用しないことに注意。

COMPOUNDROOT フラグはすでに合成された辭書の單語のために使はれる。これは結合のルールをチェックしたときに、2 つの單語を數へることを意味する。合成された單語として接辭を數へるための接辭としても使ふことができる。

CHECKCOMPOUNDPATTERN はパターンを定義するのに使はれる。そのパターンといふのは、2 つの單語がお互ひに合成されてゐる位置が一致してゐるときに結合を禁止するといふものだ。例へば:

CHECKCOMPOUNDPATTERN o e

これは、もし最初の單語が "o" で終はり、2 つ目の單語が "e" からはじまるときに、結合することを禁じる。

引數はプレーンテキストでなければならない。項目名であるにもかかはらず、實際にサポートされてゐるパターンはない。事例は常に無視される。

Hunspell スペルチェック機能は 3 つの引數が使はれ、フラグはサポートされない。

この項目は、提案するために合成を使ふことは良いアイデアではないことを示す。合成がとても短い、もしくは 1 文字の單語で使はれる時に使用する。例へば、桁外の數字を作るとか。このフラグがないと、提案を作るために奇妙な合成語のすべてを試して無駄な時閒を費すことになるだらう。

NOCOMPOUNDSUGS

SYLLABLE 項目は、文字もしくは單語の音節の數字を數へるのに使はれる文字の竝びを定義する。例:

SYLLABLE aáeéiíoóöõuúüûy/aa/au/ea/ee/ei/ie/oa/oe/oo/ou/uu/ui

最初のスラッシュの前は 1 つの音節として數へられる文字セットで、また、繰り返しや混合された時は、このセット內にはない次の文字までになる。スラッシュの後には 1 つの音節として數へられる文字列が來る。これらは、セットから文字を使ふよりも望ましい。例として、"ideeen" は 3 つの音節を持つてゐて、"i" と "ee" と "e" のやうに數へられる。

折り疊まれたケースの文字だけが含まれる必要がある。

合成を制限する他の方法は、上で述べられてゐる: |spell-COMPOUNDFORBIDFLAG| フラグを接辭に加へることは、その接辭から作られる全ての單語が合成のために使はれれないことの原因となる。

制限のない合成

タイ語のやうないくつかの言語では分かち書きをしない。これはすべての單語が結合してゐるやうに見える。これを明示するために、接辭ファイルで NOBREAK 項目を引數なしで使ふ:

NOBREAK

Vim は單語の終はりと次のはじまりがどこにあるのかを解決しようとする。スペルにミスがあつた場合、この動作は完全には正しく行はれないだらう。

共通語は COMMON 項目で明示される。小さなファイルを編輯してゐる時ほど、より良い提案をしてくれるだらう。例:

COMMON  the of to and a in is it you that he was for on are

單語は 1 行につき 25 個まで、空白で區切られてゐなければならない。":mkspell" コマンドで 複數の範圍が明示されてゐる時は、すべての範圍の共通語は結合され、すべての範圍で使はれる。

この項目は、提案を作るための單語の分割は良いアイデアではないことを示す。分割語の提案は、似たやうな單語がほとんど無い時にだけ出現するだらう。

NOSPLITSUGS

NOSUGGEST と共に使はれるフラグは、提案されることがないであらう單語のために使はれる。汚ならしい單語のために使ふことができる。

NOSUGGEST %

交換

接辭ファイルの REP 項目は、共通の誤りを定義するのに使はれる。これはスペルの提案を生成するのに使はれる。"from" のテキストと "to" の置換を定義する。例:

REP 4
REP f ph
REP ph f
REP k ch
REP ch k

最初の行は續く REP 行の數字を明示する。Vim は數字を無視するが、そこになければならない (Myspell スペルチェックとの互換性のため)。

簡易な 1 文字の置換や交換を含んでなならない。Vim はこれらをどうにかして實行しようとするだらう。さうしたいのであればすべての單語を含めることができるが、それよりも ’spellsuggest’ の "file:" 項目を使ひたいと思ふかもしれない。

アンダースコアーを使つてスペースを含めることができる:

REP the_the the

類義語

接辭ファイルの MAP 項目は、非常に良く似た文字を定義するのに使ふことができる。これはほとんど異なつたアクセント文字のために使はれる。これはむしろこれらの文字を置換する提案に使はれる。例:

MAP 2
MAP eéëêè
MAP uüùúû

最初の行は續く MAP 行の數字を明示する。Vim は數字を無視するが、そこになければならない。

それぞれの文字は、MAP 項目中に 1 つのみでなければならない。もしも最初の文字が ASCII であるか、少なくともアクセント文字でなければ少しばかり效率が良い。

.SUG ファイル

soundfolding が接辭ファイルで明示されてゐるとき、":mkspell" は通常、.sug ファイルを、續いて .spl ファイルを生成する。このファイルは sound-a-like 形式によつて、すばやく提案を見つけるのに使はれる。多くのメモリを犧牲にする (總計は單語數に依存し、|:mkspell| は終了時に槪算を表示するだらう)。

.sug ファイルを生成しないやうにするには affix ファイル中に次のアイテムを使ふ:

NOSUGFILE

使ふことを望まないのであれば、ユーザーは .sug ファイルを簡單に取り除くことができる。

SOUND-A-LIKE

接辭ファイルの SAL 項目は、sounds-a-like の仕組みを定義するのに使はれる。主な項目は "from" テキストと "to" 置換を定義する。とても簡易な例:

SAL CIA                  X
SAL CH                   X
SAL C                    K
SAL K                    K

少しのルールがあるのだが、これはかなり複雜になる。どのやうに動作するのかの說明は Aspell のマニュアルで見つけることができる:

http://aspell.net/man-html/Phonetic-Code.html

特別な項目がいくつかある:

SAL followup            true
SAL collapse_result     true
SAL remove_accents      true

"1" は "true" と同じ意味を持つてゐる。それ以外は "false" を意味する。

SIMPLE SOUNDFOLDING

SAL の仕組みは複雜で遲い。單純な仕組みは全ての文字を他の文字とマッピングし、似たやうに聞える文字を同じ文字とマッピングする。同時に、ケースフォールディングをする。SAL 項目も單純な soundfolding も持つことはできない。

要求される 2 つの項目がある: 1 つはマップされた文字を明示するための、もう 1 つはそれらがマップされてゐる文字を明示するためのもの。これらは嚴密に文字の同じ番號を持つてゐなければならない。例:

SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
SOFOTO   ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkes

例では、すべての母音は同じ文字 ’e’ にマップされてゐる。すべの母音を除去する他の方式もある。いくつかの同じやうに聞こえ、しばしば混同される ’m’ と ’n’ のやうな文字は、同じ文字にマップされてゐる。やり過ぎないこと。すべての單語は同じやうに見えるだらう。

SOFOFROM で現れない文字は、全ての空白が 1 つの空白に置き換へられることを除き、除去されるだらう。SOFOFROM の同じ文字の連續は 1 つに置き換へられる。

結果を試すために |soundfold()| 函數を使ふことができる。もしくは、|z=| コマンドの出力するスコアを見るために、’verbose’ オプションを設定することができる。

サポートされてゐないアイテム

これらのアイテムは他のスペルチェッカーの添付ファイルの中に見られる。Vim ではこれらは無視される、サポートされてゐない、もしくは他の方法で定義される。

ACCENT (Hunspell スペルチェッカー)

代はりに MAP を使ふ。|spell-MAP|

BREAK (Hunspell スペルチェッカー)

ブレークポイントの定義。これが正確にどのやうな動作をするのかは、はつきりしない。サポートされてゐない。

CHECKCOMPOUNDCASE (Hunspell スペルチェッカー)

複合語の境界の文字について大文字を許さない。サポートされてゐない。

CHECKCOMPOUNDDUP (Hunspell スペルチェッカー)

複合語中で同じ單語を 2 度使ふことを許さない。サポートされてゐない。

CHECKCOMPOUNDREP (Hunspell スペルチェッカー)

REP アイテムと複合語を使ふ何か。サポートされてゐない。

CHECKCOMPOUNDTRIPLE (Hunspell スペルチェッカー)

3 つの同じ文字で文字を合成するのを許さない。サポートされてゐない。

CHECKSHARPS (Hunspell スペルチェッカー)

(ドイツ語の) 大文字 SS の組文字は大文字のシャープ s (ß) になるだらう。サポートされてゐない。

COMPLEXPREFIXES (Hunspell スペルチェッカー)

2 つの接頭辭の使用を許す。サポートされてゐない。

COMPOUND (Hunspell スペルチェッカー)

COMPOUND アイテムの總數を持つ一行。多くの COMPOUND 行はパターンを持つ。總數を持つ最初の行は削除され、他のアイテムは COMPOUNDRULE にリネームされる。|spell-COMPOUNDRULE|

COMPOUNDFIRST (Hunspell スペルチェッカー)

代はりに COMPOUNDRULE を使ふ。|spell-COMPOUNDRULE|

COMPOUNDBEGIN (Hunspell スペルチェッカー)

COMPOUNDBEGIN でサインされた單語は複合語の最初の要素になる。代はりに COMPOUNDRULE を使ふ。|spell-COMPOUNDRULE|

COMPOUNDLAST (Hunspell スペルチェッカー)

COMPOUNDLAST でサインされた單語は複合語の最後の要素になる。代はりに COMPOUNDRULE を使ふ。|spell-COMPOUNDRULE|

COMPOUNDEND (Hunspell スペルチェッカー)

おそらくは COMPOUNDLAST と同じ。

COMPOUNDMIDDLE (Hunspell スペルチェッカー)

COMPOUNDMIDDLE でサインされた單語は複合語の眞ん中の要素になる。代はりに COMPOUNDRULE を使ふ。|spell-COMPOUNDRULE|

COMPOUNDRULES (Hunspell スペルチェッカー)

續く COMPOUNDRULE 行の數。無視されるが、引數は 1 つの數値でなければならない。

COMPOUNDSYLLABLE (Hunspell スペルチェッカー)

代はりに SYLLABLE と COMPOUNDSYLMAX を使ふ。|spell-SYLLABLE| |spell-COMPOUNDSYLMAX|

KEY (Hunspell スペルチェッカー)

キーボード上で互ひに近接してゐる文字を定義する。より良いサジェストを與へるのに使はれる。サポートされてゐない。

LANG (Hunspell スペルチェッカー)

language-specific の擧動を特定する。 これは自動的にプログラム中の言語情報の部分へ移動する。それゆゑ、Vim はサポートしてゐない。それぞれの言語の特性は個別に明示されてゐなければならない。

LEMMA_PRESENT (Hunspell スペルチェッカー)

形態素解析のためだけに必要とされる。

MAXNGRAMSUGS (Hunspell スペルチェッカー)

n-gram サジェストの數を設定する。サポートされてゐない。

PSEUDOROOT (Hunspell スペルチェッカー)

代はりに NEEDAFFIX を使ふ。|spell-NEEDAFFIX|

SUGSWITHDOTS (Hunspell スペルチェッカー)

サジェストにドットを加へる。Vim では必要ない。

SYLLABLENUM (Hunspell スペルチェッカー)

サポートされてゐない。

TRY (Myspell, Hunspell, 他 スペルチェッカー)

Vim は TRY アイテムを使はない。無視される。サジェストを生成するために、實際の單語の文字が使はれる。これは效率が良い。

WORDCHARS (Hunspell スペルチェッカー)

單語を評價するのに使はれる。Vim は必要としない。なぜなら、これらをチェックする前に單語を分ける必要がないから(ハッシュテーブルの代はりにトライを使つてゐる)。


Up: 目次   [Index]