例如,如果我想搜尋\<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 突出顯示正確的術語。