*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’ を使ひたいと思ふだらう。そちらのはうがうまくいく。
このコマンドで、スペルチェックがオンになる:
: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 では: メニューが表示されるまではマウスの右ボタンを離してはいけない。さうしないと機能しない。
次の綴りの閒違つた單語を探すには:
カーソルの後の、次の綴りの閒違つた單語に移動する。コマンドの前に count を指定することで、繰り返しができる。’wrapscan’ が適用される。
"]s" と同樣だが後方檢索を行ひ、カーソルより前の綴りの閒違つた單語を探す。2 行に渡つた單語は認識しないため、閒違ひとしてハイライトされてゐない單語で止まることがある。行頭が大文字になつてゐない單語では止まらない。
"]s" と同樣だが、閒違つた單語のみで止まり、まれな單語や他の地域の單語では止まらない。
"]S" と同樣だが、後方檢索を行ふ。
單語をあなた自身の單語リストに追加するには:
カーソルの下の單語を正しい (good) 單語として、’spellfile’ の最初のファイルに追加する。コマンドの前に count を指定することで、’spellfile’ 內の項目を指定することができる。count として 2 を指定すると、2 番目の項目が使はれる。
ビジュアルモードで選擇された文字は單語として追加される (スペースを含む!)。カーソルが閒違つた綴りとしてマークされた文章の上にある時、そのマークされた文章が使はれる。さうでなければ、單語ではない文字で分けられたカーソルの下の單語が使はれる。
もしその單語が明示的に別のスペルファイルで閒違つた單語としてマークされてゐるなら、その結果は豫測できない。
"zg" と同樣であるが、その單語を內部單語リスト |internal-wordlist| に加へる。
"zg" と同樣であるが、閒違つた (wrong) 單語としてマークする。もしその單語がすでに ’spellfile’ にある場合は、コメント行に變更される。それらを取り除くには |spellfile-cleanup| を參照する。
"zw" と同樣であるが、その單語を內部單語リスト |internal-wordlist| に加へる。
|zw| や |zg| を undo して、’spellfile’ の項目からその單語を削除する。count は |zg| と同樣に使はれる。
|zW| や |zG| を undo して、內部單語リストからその單語を削除する。count は |zg| と同樣に使はれる。
|zg| と同樣に、{word} を正しい單語として ’spellfile’ に加へる。count が無いときは最初の名前が使はれ、count に 2 を指定したときは 2 番目の項目が使はれる。以下同樣。
|zG| と同樣に、{word} を正しい單語として內部單語リストに加へる。
|zw| と同樣に、{word} を閒違つた (wrong) 單語として ’spellfile’ に加へる。count が無いときは最初の名前が使はれ、count に 2 を指定したときは 2 番目の項目が使はれる。以下同樣。
|zW| と同樣に、{word} を閒違つた (wrong) 單語として內部單語リストに追加する。
|zw| と同樣に、{word} を稀な單語として ’spellfile’ に加へます。count が無いときは最初の名前が使はれ、count に 2 を指定したときは 2 番目の項目が使はれます。
これらは非常に珍しいコマンドであり、このための直感的なコマンドは既に使はれてゐるため、單語を稀とマークするノーマルモードのコマンドはありません。必要に應じて次のやうにマッピングを追加できます。例:
nnoremap z? :exe ':spellrare ' . expand('<cWORD>')<CR> nnoremap z/ :exe ':spellrare! ' . expand('<cWORD>')<CR>
|:spellundo|, |zuw| または |zuW| はこれをもとに戾すことができます。
|zW| と同樣に {word} を稀な單語として內部單語リストに追加します。
|zuw| と同樣である。[count] は |:spellgood| と同樣に使はれる。
|zuW| と同樣である。[count] は |:spellgood| と同樣に使はれる。
上記のコマンドで ’spellfile’ に單語を追加した後、 その關聯付けられた ".spl" ファイルは自動的に更新され再讀み込みされる。もし手動で ’spellfile’ を變更するなら |:mkspell| コマンドを用ゐる必要がある。このコマンドの順序でたいていふまくいく:
:edit <'spellfile' にあるファイル> (スペルファイルに變更を加へる) :mkspell! %
’spellfile’ の形式に關する詳細は下記の |spell-wordlist-format| を參照。
內部單語リストは ’spell’ がセットされた全てのバッファで使はれる。內部單語リストは蓄へられず、Vim が終了する時に失はれる。また ’encoding’ がセットされた時にクリアされる。
閒違つた單語に對してのサジェストを調べるには:
カーソルの下や後の單語に對して正しい綴りの單語を提案する。これはまた閒違つた單語としてハイライトされてゐない單語に對しての代はりを調べることもできる。例へば、その後の單語が閒違つてゐる場合など。ビジュアルモードでハイライトされたテキストは置換される單語として見なされる。結果は、置換されようとしてゐる單語との類似度でソートされる。これには長い時閒が掛かることがある。うんざりした場合は CTRL-C を打つこと。
count なしでこのコマンドを使ふ場合、選擇肢がリストアップされ、選びたい選擇肢の番號を入力することができる。置き換へたくない場合は <Enter>
を押す。また、マウスを使つて選擇肢をクリックすることもできる (マウスがノーマルモードで使はれ、行の折り返しがない時のみ働く)。キャンセルするには最初の行 (ヘッダー) をクリックする。
リストアップされた提案はふつうハイライトされた閒違つた單語を置き換へる。そのサジェストは時々他のテキストを含むことがあるが、その場合は置き換へられるテキストが "<" の後にリストアップされる。
count を用いた場合、プロンプトは出ずにその提案が使はれる。例へば、"1z=" は常に最初の提案を利用する。
’verbose’ が 0 以外の場合、閒違つた單語との類似度を示すスコアがサジェストと共に表示される (高いスコアは、違ひが大きいことを示す)。單語が置換された後は、リドゥコマンド "." はその單語の置換を繰り返す。これは、"ciw" の後に正しい單語を入力し <Esc> を入力したやうに動作する。これは、單語の閒にスペースを含まないタイ語やその他の言語に對しては動かない。
|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|。
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" を使ふこと。一覽:
’encoding’ | ’spelllang’ | |
---|---|---|
utf-8 | yi | イディッシュ語 |
latin1 | yi | ローマ字に字譯されたイディッシュ語 |
utf-8 | yi-tr | ローマ字に字譯されたイディッシュ語 |
中國語、日本語、あるいはその他の東アジアの文字に對するスペルチェックはサポートされてゐないため、これらの文字は通常、エラーとしてマークされる。’spelllang’ が "cjk" を含んでゐる場合、これらの文字はエラーとしてマークされなくなる。これは、いくつかのアジアの單語が含まれるテキストを、スペルチェックを有效にして編輯する際に有用である。
Vim は ’runtimepath’ のディレクトリの中の "spell" といふ名前のサブディレクトリにあるスペルファイルを探す。ファイル名は LL.EEE.spl のやうになる:
LL | 言語名 |
EEE | ’encoding’ の値 |
"LL" の値は ’spelllang’ の値が使はれるが、地域名は除外される。
例:
’spelllang’ | LL |
en_us | en |
en-rare | en-rare |
medical_ca | medical |
’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. が見つからず、2. が見つかつたと假定してゐる。
もし ’encoding’ が "latin1" ならば Vim は以下を探す:
これはこれらが見つからないことを想定する (ポーランド語は 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 を書きたいと思ふと、これらの函數が役に立つことが分かるだらう:
spellbadword() | カーソル下の閒違つたつづりの單語を見つける |
spellsuggest() | 正しいつづりの候補を得る |
soundfold() | 同音 (sound-a-like) の單語を得る |
’spelllang’ オプションがうまく設定されたあとは、Vim は ’runtimepath’ から "spell/LANG.vim" ファイルを讀み込む。"LANG" は最初のコンマ、ドット、またはアンダースコアーまでの ’spelllang’ の値。これは言語のための特別なオプション、とりわけ ’spellcapcheck’ を設定することができる。
ディストリビューションはこれらのファイルがいくつか含んでゐる。これらが何をしてゐるのかを見るには次のコマンドを使ふ:
:next $VIMRUNTIME/spell/*.vim
Note:
デフォルトのスクリプトは初期値が變更されてゐるならば、’spellcapcheck’ を設定しないことに注意。これはその時のユーザーが好む値を想定する。
"double" 方式のスコア付けを選擇するために ’spellsuggest’ オプションを使用できる。この機構は、綴り閒違ひには 2 種類あるといふ原則に基づいてゐる:
これら 2 つの閒違ひのスコアは大きく異なるので、リストをそれぞれ使ひ組み合はせる。
sound-folding は遲く、言語を知つてゐる人は閒違ひのやうなものを 2 度としたくはないだらう。それゆゑ ’spellsuggest’ はスコアリングの方法を選擇することができる。
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 は推測しようとする。
單語リストから 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’ オプションで切り替へることができる。
バッファ內でスペルファイルが書き込まれて使はれはじめると、自動的に再讀み込みされる。
上記の ":mkspell
" と似てゐる。入力ファイルとして {name}.{enc}.add を使ひ、同じディレクトリ內に ".spl" を付加して出力する。
上記の ":mkspell
" と似てゐる。入力ファイルとして {name} を使ひ、同じディレクトリ內に ".{enc}.spl" を付加して出力する。
Vim は重複してゐる單語の數を報告する。これは單語リスト中の誤りであるかもしれない。頻繁ではないが、これらが連續することを囘避するために、同じ基本語のための接頭辭と接尾語の差異が使はれる (例へばチェコ語はこれを使ふ)。Vim に重複するすべての單語をレポートしてもらひたければ、’verbose’ オプションを設定する。
Vim で使ふために Myspell スペルチェッカーの單語リストを變更したいなら、次のやうにすることをお薦めする:
:set spell spelllang=xx
" でスペルファイルを試してみる。その他に書き込むなら ":set spelllang=xx.enc.spl
" を使ふ。
Myspell ファイルがアップデートされたとき、差異をマージすることができる:
vimdiff xx_YY.orig.dic xx_YY.new.dic
スペルチェックは 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 をアップグレードするのが良い考へだ。
もし何らかの理由で、現在使つてゐるスペルファイルでどんな單語がサポートされてゐるかをチェックしたい場合、以下のコマンドを使用できる:
新しいウィンドウを開いて、現在妥當であるすべての單語で埋め盡す。複合語は含まれない。
Note:
いくつかの言語では Vim がメモリ不足になるやうな、非常の大きな結果となるかもしれないことに注意。
":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 自動コマンドはユーザーが編輯してゐるバッファを變更や破毀してはいけないことに注意。
これは單語リストを作成、管理する人が使ふファイルのフォーマットである。
Note:
ここでは辭書 ("dictionary") といふ單語を使ふのを避ける。スペルチェックのゴールは (本のやうな) 辭書を書くやうなものとは違ふからだ。スペルチェックのために、OK である單語のリストが必要になる。それゆゑ、ハイライトされるべきではない。人と會社の名前は辭書內には現れることはないだらう。しかし、單語リストの中には現れる。そして、共通のミススペルとしてまれに古い單語が使はれる。これらは辭書に現れるけれども、單語リストには現れない。
2 つのフォーマットがある: それは單語の率直なリストと接辭壓縮を使つたリストだ。接辭壓縮を使つたファイルは Myspell (Mozilla と OpenOffice.org) で使はれる。2 つのファイルが必要で、1 つは .aff、もう 1 つは .dic の擴張子を持つファイルだ。
單語は 1 行ごとに現はれなければならない。これが必要とされることのすべてだ。
加へて次の項目が評價される:
# comment
/encoding=utf-8
/regions=usca
= | ケースは正確にマッチしなければならない |
? | 珍しい單語 |
! | 惡い (誤つた) 單語 |
1 から 9 | 單語が妥當である地域。地域が指定されてゐないなら、すべての地域を指定する。 |
例:
# 單語リストの例 | コメント |
---|---|
/encoding=latin1 | ファイルのエンコーディング |
/regions=uscagb | 地域 "us", "ca" や "gb" |
example | すべての地域の單語 |
blah/12 | "us" と "ca" 地域の單語 |
vim/! | 誤つた單語 |
Campbell/?3 | 地域 3 "gb" での珍しい單語 |
’s mornings/= | ケースを保つた單語 |
Note:
"/=" が使はれたときに、すべてが大文字の同じ單語は無視されることに注意。 これは自動的にケースを保つたものしてマークされた大文字小文字が混ざつた單語とは異なる。これらの單語はすべてが大文字であるやうに見えるだらう。
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)。
行番號をつけたちよつとした例:
1 | 1234 |
2 | aan |
3 | Als |
4 | Etten-Leur |
5 | et al. |
6 | ’s-Gravenhage |
7 | ’s-Gravenhaags |
8 | # word that differs between regions |
9 | kado/1 |
10 | cadeau/2 |
11 | TCP,IP |
12 | /the S affix may add a ’s’ |
13 | bedel/S |
最初の行には單語の數が含まれてゐる。Vim はこれを無視するが、ここに無い場合はエラーメッセージを受け取る。
これに續くのは 1 行につき 1 つの單語。行の終はりの空白は無視され、その他の空白は問題となる。エンコーディングは接辭ファイル內で指定される |spell-SET|。
コメント行は ’#’ か ’/’ ではじまる。8 行目と 12 行目を參照。
Note:
單語のうしろにコメントを置くことは認められてゐないことに注意:someword # このコメントはエラーになる!
單語のうしろにはオプションのスラッシュとフラグがある。これらフラグのほとんどは、その單語で使ふことのできる接辭を示す文字である。.aff ファイルの SFX や PFX 行で指定されてゐる。|spell-SFX| と |spell-PFX| を參照。Vim では接辭ファイルの FLAG 項目で、他の形式のフラグを使つてよい |spell-FLAG|。
單語が小文字のみの場合、大文字で始まる單語にもマッチするだらう。
單語が大文字を含んでゐる場合、その場所に大文字が必要とされてゐることを意味する。その場所が小文字である同じ單語はマッチしない。他の文字が大文字である場合もマッチしない。
すべてが大文字の單語はいつも OK になるだらう。
單語リスト | マッチする | マッチしない |
---|---|---|
als | als Als ALS | ALs AlS aLs aLS |
Als | Als ALS | als ALs AlS aLs aLS |
ALS | ALS | als Als ALs AlS aLs aLS |
AlS | AlS ALS | als Als ALs aLs aLS |
KEEPCASE の接辭 ID は まつたく同じ單語のみのマッチ指定に使ふことができる。下記の |spell-KEEPCASE| を參照。
Note:
5 から 7 行目は單語ではない文字が使はれてゐることに注意。單語にはどのやうな文字でも含めることができる。テキストをチェックしてゐる際に、單語の前後に單語ではない文字が現れた時は單語のみにマッチする。Myspell スペルチェックでは、單語ではない文字で始まる單語はたぶん動作しないだらう。
12 行目では單語 "TCP/IP" が定義されてゐる。スラッシュには特別な意味があるので、代はりにコンマが使はれる。これは接辭ファイルの SLASH アイテムに定義されてゐる。|spell-SLASH| を參照。
Note:
この SLASH アイテムが無いと、單語は "TCP,IP" となるだらう。
.aff ファイルのコメント行は ’#’ で始まる:
# コメント行
引數の固定された引數をもつアイテムはコメントとして續けることができる。引數が無い場合に限り空白を含むことができる。 コメントは "#" から始まらなければならない。例:
KEEPCASE = # このフラグで單語の大文字小文字を固定する
接辭ファイルは "iconv" によつてサポートされてゐるエンコーディングであれば、どのやうなものでも良い。しかしながらいくつかの場合で、現在のロケールはまた、プロパティは |:mkspell| が呼び出された時に設定されるべきだ。加へて、FOL/LOW/UPP 行はこの |spell-FOL| の要求を削除する。
エンコーディング事項の何よりもまず前にエンコーディングは指定されるべきだ。エンコーディングは接辭ファイルと辭書ファイルのどちらにも適用される。これは SET 行において成される:
SET utf-8
エンコーディングは ":mkspell
" が使はれた時に、’encoding’ オプションの値とは異なつてもよい。Vim は ’encoding’ の全てを變換し、’encoding’ のためのスペルファイルを生成するだらう。
もしも ’encoding’ に適合してゐない文字が使はれてゐると、エラーメッセージを受け取るだらう。
マルチバイトのエンコーディングが使はれてゐる場合、より多くの異なつた接辭フラグを使ふことができる。しかし、Myspell スペルチェックはこれをサポートしてゐない。それゆゑ、あなたはこれをいいかげんに使はうとは思はないだらう。互換性のために 8-bit エンコーディングを使ふ。
接辭ファイルのエントリは、スペルファイルへ情報を追加するのに使ふことができる。フォーマットに制限はないが、正しいエンコーディングであるべきだ。
NAME | 言語名 |
VERSION | 1.0.1 with fixes |
HOME | http://www.myhome.eu |
AUTHOR | John Doe |
john AT Doe DOT net | |
COPYRIGHT | LGPL |
これらのフィールドは .spl ファイルにそのままの狀態で置かれる。|:spellinfo| コマンドは info を閱覽するために使ふことができる。
現在のバッファのために使はれてゐるスペルファイルの情報を表示する。
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 long | 2 文字フラグを使ふ |
FLAG num | 1 から 65000 までの數値を使ふ |
FLAG caplong | A-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
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} が . (ドット) の場合は條件はない。
パターンは次のものを含む:
| ||||
{extra} | オプションの特別なテキスト:
|
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 つの接尾辭が使はれる。
特に、接辭フラグは次のために使はれる:
通常 Vim は ’#’ ではじまらない特別なフィールドにはエラーを與へる。これは氣づかれずに進行してゐるエラーを囘避する。とはいへ、Myspell スペルチェックや Hunspell スペルチェック用に作成されたいくつかのファイルは、特別なフィールドを持つエントリを多く含んでゐるかもしれない。たくさんのエラーを囘避するためには IGNOREEXTRA フラグを使ふ。
CIRCUMFIX フラグは同時に付加されなければならない接頭辭と接尾辭を意味する。もしも接頭辭が CIRCUMFIX フラグを持つのなら、CIRCUMFIX フラグの接尾辭のみが追加される。そしてその反對も。代替としては接辭を指定し、その接辭に 2 つのフラグを與へることだけである: それは必要とされる接頭辭と NEEDAFFIX フラグである。|spell-NEEDAFFIX|
接辭ファイルが多くの單語に適用する非常に多くの接頭辭を持つてゐる場合、全ての單語リストをメモリ內でビルドするのは不可能である。これはヘブライ語 (滑ての單語リストはギガバイトを超える) に適用する。この場合、適用されてゐる接頭辭は後まはしにされなければならない。これはスペルチェックの動作を遲くする。これは .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 yz | yz |
COMPOUNDRULE x+z | xz xxz xxxz など |
COMPOUNDRULE yx+ | yx yxx yxxx など |
COMPOUNDRULE xy?z | xz xyz |
COMPOUNDRULE [abc]z | az bz cz |
COMPOUNDRULE [abc]+z | az aaz abaz bz baz bcbz cz caz cbaz など |
COMPOUNDRULE a[xyz]+ | ax axx axyz ay ayx ayzz az azy azxy など |
COMPOUNDRULE sm*e | se sme smme smmme など |
COMPOUNDRULE s[xyz]*e | se 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 であるか、少なくともアクセント文字でなければ少しばかり效率が良い。
soundfolding が接辭ファイルで明示されてゐるとき、":mkspell
" は通常、.sug ファイルを、續いて .spl ファイルを生成する。このファイルは sound-a-like 形式によつて、すばやく提案を見つけるのに使はれる。多くのメモリを犧牲にする (總計は單語數に依存し、|:mkspell| は終了時に槪算を表示するだらう)。
.sug ファイルを生成しないやうにするには affix ファイル中に次のアイテムを使ふ:
NOSUGFILE
使ふことを望まないのであれば、ユーザーは .sug ファイルを簡單に取り除くことができる。
接辭ファイルの 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" を意味する。
SAL の仕組みは複雜で遲い。單純な仕組みは全ての文字を他の文字とマッピングし、似たやうに聞える文字を同じ文字とマッピングする。同時に、ケースフォールディングをする。SAL 項目も單純な soundfolding も持つことはできない。
要求される 2 つの項目がある: 1 つはマップされた文字を明示するための、もう 1 つはそれらがマップされてゐる文字を明示するためのもの。これらは嚴密に文字の同じ番號を持つてゐなければならない。例:
SOFOFROM abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ SOFOTO ebctefghejklnnepkrstevvkesebctefghejklnnepkrstevvkes
例では、すべての母音は同じ文字 ’e’ にマップされてゐる。すべの母音を除去する他の方式もある。いくつかの同じやうに聞こえ、しばしば混同される ’m’ と ’n’ のやうな文字は、同じ文字にマップされてゐる。やり過ぎないこと。すべての單語は同じやうに見えるだらう。
SOFOFROM で現れない文字は、全ての空白が 1 つの空白に置き換へられることを除き、除去されるだらう。SOFOFROM の同じ文字の連續は 1 つに置き換へられる。
結果を試すために |soundfold()| 函數を使ふことができる。もしくは、|z=| コマンドの出力するスコアを見るために、’verbose’ オプションを設定することができる。
これらのアイテムは他のスペルチェッカーの添付ファイルの中に見られる。Vim ではこれらは無視される、サポートされてゐない、もしくは他の方法で定義される。
代はりに MAP を使ふ。|spell-MAP|
ブレークポイントの定義。これが正確にどのやうな動作をするのかは、はつきりしない。サポートされてゐない。
複合語の境界の文字について大文字を許さない。サポートされてゐない。
複合語中で同じ單語を 2 度使ふことを許さない。サポートされてゐない。
REP アイテムと複合語を使ふ何か。サポートされてゐない。
3 つの同じ文字で文字を合成するのを許さない。サポートされてゐない。
(ドイツ語の) 大文字 SS の組文字は大文字のシャープ s (ß) になるだらう。サポートされてゐない。
2 つの接頭辭の使用を許す。サポートされてゐない。
COMPOUND アイテムの總數を持つ一行。多くの COMPOUND 行はパターンを持つ。總數を持つ最初の行は削除され、他のアイテムは COMPOUNDRULE にリネームされる。|spell-COMPOUNDRULE|
代はりに COMPOUNDRULE を使ふ。|spell-COMPOUNDRULE|
COMPOUNDBEGIN でサインされた單語は複合語の最初の要素になる。代はりに COMPOUNDRULE を使ふ。|spell-COMPOUNDRULE|
COMPOUNDLAST でサインされた單語は複合語の最後の要素になる。代はりに COMPOUNDRULE を使ふ。|spell-COMPOUNDRULE|
おそらくは COMPOUNDLAST と同じ。
COMPOUNDMIDDLE でサインされた單語は複合語の眞ん中の要素になる。代はりに COMPOUNDRULE を使ふ。|spell-COMPOUNDRULE|
續く COMPOUNDRULE 行の數。無視されるが、引數は 1 つの數値でなければならない。
代はりに SYLLABLE と COMPOUNDSYLMAX を使ふ。|spell-SYLLABLE| |spell-COMPOUNDSYLMAX|
キーボード上で互ひに近接してゐる文字を定義する。より良いサジェストを與へるのに使はれる。サポートされてゐない。
language-specific の擧動を特定する。 これは自動的にプログラム中の言語情報の部分へ移動する。それゆゑ、Vim はサポートしてゐない。それぞれの言語の特性は個別に明示されてゐなければならない。
形態素解析のためだけに必要とされる。
n-gram サジェストの數を設定する。サポートされてゐない。
代はりに NEEDAFFIX を使ふ。|spell-NEEDAFFIX|
サジェストにドットを加へる。Vim では必要ない。
サポートされてゐない。
Vim は TRY アイテムを使はない。無視される。サジェストを生成するために、實際の單語の文字が使はれる。これは效率が良い。
單語を評價するのに使はれる。Vim は必要としない。なぜなら、これらをチェックする前に單語を分ける必要がないから(ハッシュテーブルの代はりにトライを使つてゐる)。