たとえば、\<data\>
次のように複数行のブロックコメント内に表示されるエントリを検索対象としてスキップしたいとします。
/*
* Don't match comments containing the term 'data'
*/
\(\*.*\)\@<!\<data\>
ブロックコメントは必ずしも*
各行で始まるとは限らないため、ゼロ幅のネガティブ後読みを使用することはできません。
複数行のブロックコメント内の一致を除外することは困難/不可能と思われますが、構文の強調表示ではどのセクションがコメントでどのセクションがそうでないか識別できるので、正規表現検索を構文の強調表示グループと結び付ける方法はありますか?
構文強調表示グループに結び付けることができれば、コメント内に表示される用語だけでなく、次のように文字列内に表示される用語も除外できるようになります。
output = "Sample data: '"+data+"' ...";
そして、引用符の外側の中央にあるデータのみが一致します。
これが可能かどうか知っている人はいますか?
編集:コメントを除外して検索することは少なくとも間違いなく可能です。誰かが指摘しているように、search()関数を定義して、その中でハイライトグループをチェックすることができます。このスレッド該当部分:
search() を使用して、構文強調表示グループがコメントであるかどうかを確認します。synIDattr(synIDtrans(synID(line("."), col("."), 1)), "name") がコメントである場合は、search() を再度呼び出します。
しかし、これによって hlsearch が適切な用語を強調表示するようになるとは思えません。