vim 是否可以搜尋不包括註釋/區塊註釋中出現的術語?

vim 是否可以搜尋不包括註釋/區塊註釋中出現的術語?

例如,如果我想搜尋\<data\>但想跳過多行區塊註解中出現的任何條目,如下所示:

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

我不能只使用零寬度負向後查找,\(\*.*\)\@<!\<data\>因為區塊註解並不總是*在每行上以 a 開頭。

似乎很難/不可能排除多行塊註釋內的匹配,但語法突出顯示能夠識別哪些部分是註釋,哪些部分不是,所以有什麼方法可以將正則表達式搜尋與語法突出顯示組結合起來?

如果可以綁定到語法突出顯示組,我不僅可以排除出現在註釋中的術語,還可以排除出現在字串中的術語,如下所示:

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

且只有中間引號之外的資料才會匹配。

有人知道這是否可能嗎?

編輯:至少排除評論的搜尋絕對是可能的。我可以定義一個 search() 函數並從其中檢查突出顯示群組,如中的某人所示這個線程。相關部分:

使用 search() 然後檢查語法高亮組是否為註解。如果 synIDattr(synIDtrans(synID(line("."), col("."), 1)), "name") 是 Comment,則再次呼叫 search()。

但我認為這不會讓 hlsearch 突出顯示正確的術語。

相關內容