この質問は、この質問の続編です。vimスペルチェックから大文字の単語を削除する次のスクリプトがあります。
syn match myExCapitalWords +\<\w*[A-Z]\K*\>+ contains=@NoSpell
しかし、それは私がsyn clear
最初に行う場合にのみ機能します。ただし、他のすべての強調表示 (マークダウンなど) は失われます。何syn list
が競合を引き起こしているのかを調べましたが、今は手がかりがありません。
この質問は、この質問の続編です。vimスペルチェックから大文字の単語を削除する次のスクリプトがあります。
syn match myExCapitalWords +\<\w*[A-Z]\K*\>+ contains=@NoSpell
しかし、それは私がsyn clear
最初に行う場合にのみ機能します。ただし、他のすべての強調表示 (マークダウンなど) は失われます。何syn list
が競合を引き起こしているのかを調べましたが、今は手がかりがありません。
myExCapitalWords
グループで任意の構文を拡張しているようです。機能するかどうか、またはどの構文項目で機能するかは、基礎となる構文によって異なります。残念ながら、任意の構文を包括的に拡張することはできません。:syn clear
そのため、(基礎となる構文を取り除く)を介してのみ解決できる問題が見られます。
構文には複数のグループが含まれており、その一部は通常contained=
他のグループに属しています。新しい構文を導入すると、他の構文グループが一致しない場合にのみ適用されます。containedin=TOP
またはを介してグループを強制的に他のグループにcontainedin=ALL
含めることができますが、そのオーバーレイにより、他の元のグループが一致しなくなり、独自のcontains=
またはnextgroup=
現在は適用されないため、奇妙な効果が生じる可能性があります。
残念ながら、これに対する一般的な解決策はありません。いくつかの構文だけに関心がある場合は、ワンライナーを微調整して、基礎となる構文 (たとえば、 try ) と連携させることができますがcontainedin={syntaxName}Comment{s}
、一般的に適用できる解決策はありません。