5

.c ファイルで「if(」などの Pouet グループのキーワードを赤で強調表示するように vim を設定します。

syn keyword Pouet if

(これは私の ~/.vim/syntax/c.vim です)

そして

highlight Pouet term=NONE cterm=NONE Ctermfg=160 ctermbg=NONE gui=NONE

(そして、これは私の .vimrc の一部です)

問題は、このコードが '(' のような特殊文字、またはスペースまたは多くのスペースで機能しないことです。私の質問は、'if(' のような文を赤で強調表示するにはどうすればよいですか

ありがとう

4

1 に答える 1

3

:syn keywordキーワード文字 ('iskeyword'設定で定義) に対してのみ機能し、(通常は含まれません。

:syn match代わりに使用する必要があります。

:syn match Pouet "\<if("

構文をすべて自分で定義する場合、これは問題ありません。既存の C 構文の強調表示に加えてこれが必要な場合は、元の構文グループを分析して のようなものを追加する必要がありcontainedin=cConditionalます。元の構文定義を変更する必要さえあるかもしれません。

代替手段はmatchadd()、構文の強調表示の上にある です。

:call matchadd('Pouet', '\<if(')

ここでの問題は、これらの一致はウィンドウローカルであり、構文の強調表示のようにファイルタイプにバインドされていないため、ウィンドウを分割したり、現在のウィンドウで別のファイルタイプを編集したりすると、強調表示が消えたり持続したりすることです。これらの問題は autocmds で回避できますが、現在は非常に複雑になっています。

于 2012-10-11T16:00:47.763 に答える