9

私はvim7.0が:setスペルによるスペルチェックをサポートしているのが好きで、デフォルトではCコードのコメントとテキスト文字列のみをチェックするのが好きです。しかし、アンダースコアを含む単語を書くときに、その単語のスペルをチェックしたくないことをvimが認識できるように、動作を変更する方法を見つけたかったのです。

問題は、コメントで変数名や関数名を頻繁に参照することです。そのため、現在、vimは、完全に正しい単語ではない各テキストはスペルミスであると考えています。例えば。

/* The variable proj_abc_ptr is used in function do_func_stuff' */

ほとんどの場合、アンダースコアで区切られた部分は完全な単語ですが、それ以外の場合は、単語リストに追加したくない略語です。スペルチェック時に単語の一部として_を含めるようにvimに指示するグローバルな方法はありますか?

4

2 に答える 2

5

.vim/after/syntax/{LANG}.vimファイルに入れるためのより一般的なスペルチェックの例外ルールは次のとおりです。

" Disable spell-checking of bizarre words:
"  - Mixed alpha / numeric
"  - Mixed case (starting upper) / All upper
"  - Mixed case (starting lower)
"  - Contains strange character
syn match spellingException "\<\w*\d[\d\w]*\>"      transparent contained containedin=pythonComment,python.*String contains=@NoSpell
syn match spellingException "\<\(\u\l*\)\{2,}\>"    transparent contained containedin=pythonComment,python.*String contains=@NoSpell
syn match spellingException "\<\(\l\+\u\+\)\+\l*\>" transparent contained containedin=pythonComment,python.*String contains=@NoSpell
syn match spellingException "\S*[/\\_`]\S*"         transparent contained containedin=pythonComment,python.*String contains=@NoSpell

pythonComment,python.*String言語に合わせて変更してください。

  • transparent一致が包含ブロックから強調表示プロパティを継承することを意味します(つまり、これらのルールはテキストの表示方法を変更しません)。
  • containedこれらの一致が含まれているブロックを超えて拡張するのを防ぎます(ブロック\S*の終わりを超えて一致する可能性が高い最後のルールが終了します)
  • containedinこれらの新しいルールを追加する既存の構文グループのリストを保持します。
  • contains=@NoSpell継承されたすべてのグループをオーバーライドして、一致したテキストをスキップするようにスペルチェッカーに指示します。
于 2010-06-01T20:09:48.617 に答える
4

それを独自のグループに移動する必要があります。このようなもの:

hi link cCommentUnderscore cComment
syn match cCommentUnderscore display '\k\+_\w\+'
syn cluster cCommentGroup add=cCommentUnderscore

contains=@NoSpell一部の蛍光ペンでは、マッチラインの最後に必要になる場合がありますが、Cでは、デフォルトは@NoSpellであるため、このように問題ないはずです。

于 2009-08-14T18:48:09.513 に答える