2

javascriptの構文の強調表示をvimに追加しようとしましたが、1つの問題が発生し続けています。文字がすでに強調表示されている場合、他のすべての正規表現では完全に無視されているようです。

たとえば、関数の引数リストに構文の強調表示を追加しようとしました。適切な正規表現を作成しているときに、functionキーワードの構文の強調表示を無効にして、正規表現の機能を簡単に確認できるようにしました。私は次の(動作する)正規表現になりました:

syn match javaScriptArguments "[(=\:\s,]function.\{-}(\zs.\{-}\ze)"

ただし、functionキーワードの強調表示を再度有効にすると、この行は機能しなくなります。vimは、すでに強調表示されているものをすべて除外しているようです。したがって、文字が2回強調表示されない場合でも、上記の正規表現に一致するものは見つかりません。

この問題を解決/回避するにはどうすればよいですか?

4

1 に答える 1

6

contained構文定義は、他の構文項目内で一致する必要があります。ですべての恐ろしい詳細を見つけてください:help syn-contains

あなたの場合、あなたはを介して「関数」キーワードの先読みに依存しています\zs。私の経験では、それは問題を引き起こすことは間違いありませんが、一度使用すると不要になる可能性がありますcontained。一般に、元のスクリプトを変更せずに既存の構文定義を拡張することは困難です(これはあなたが意図していることだと思います)。を見て:help :syn-containedinください:help :syn-nextgroup

于 2012-05-16T13:01:15.843 に答える