Ist es in vim möglich, nach einem Begriff zu suchen, der die in Kommentaren/Blockkommentaren vorkommenden Begriffe ausschließt?

Ist es in vim möglich, nach einem Begriff zu suchen, der die in Kommentaren/Blockkommentaren vorkommenden Begriffe ausschließt?

Wenn ich beispielsweise suchen möchte, \<data\>aber alle Einträge überspringen möchte, die in mehrzeiligen Blockkommentaren wie diesen erscheinen:

/*
 * Don't match comments containing the term 'data'
 */

Ich kann nicht einfach die Nullbreite „Negative Lookbehind“ verwenden, \(\*.*\)\@<!\<data\>da die Blockkommentare nicht immer *in jeder Zeile mit einem beginnen.

Es scheint schwierig/unmöglich zu sein, Übereinstimmungen innerhalb mehrzeiliger Blockkommentare auszuschließen, aber die Syntaxhervorhebung kann erkennen, welche Abschnitte Kommentare sind und welche nicht. Gibt es also eine Möglichkeit, die Regex-Suche mit Syntaxhervorhebungsgruppen zu verknüpfen?

Wenn eine Einbindung in die Syntaxhervorhebungsgruppen möglich ist, könnte ich nicht nur die in Kommentaren vorkommenden Begriffe ausschließen, sondern auch die Begriffe, die in Zeichenfolgen vorkommen, wie folgt:

output = "Sample data: '"+data+"' ...";

Und nur die Daten in der Mitte außerhalb der Anführungszeichen würden übereinstimmen.

Weiß jemand, ob das möglich ist?

BEARBEITEN:Eine Suche ohne Kommentare ist definitiv möglich. Ich könnte eine search()-Funktion definieren und die Hervorhebungsgruppe von innen heraus überprüfen, wie jemand indieser ThreadRelevanter Teil:

Verwenden Sie search() und prüfen Sie dann, ob die Syntaxhervorhebungsgruppe ein Kommentar ist. Wenn synIDattr(synIDtrans(synID(line("."), col("."), 1)), "name") ein Kommentar ist, rufen Sie search() erneut auf.

Ich glaube aber nicht, dass hlsearch dann die richtigen Begriffe hervorheben würde.

verwandte Informationen