我目前正在學習俄語,並且在西裏爾字母的編碼中有一個警告:有些看起來完全像ASCII。例。單詞「облако」(雲)既不包含「a」也不包含「o」,但它包含一個「а」和一個「о」。如果還沒有找到,請嘗試啓動瀏覽器搜索對話框,輸入「a」或「o」,使用一些突出顯示的所有功能,然後您會看到「а」和「о」兩者保持黑暗。如何匹配字詞中的特定字母
所以,現在我想在vim中強調這個問題。由於我使用的是混合語言文本文件,因此我不能只突出顯示每個ASCII字母(這很容易),而是希望包含至少一個西裏爾字母的所有單詞中的所有ASCII字母都以錯誤突出顯示。我目前的做法就是用這種匹配:
" Here, I use бакло as a shortcut for the list of all cyrillic letters,
" this makes this a small self contained example for the word used in the
" problem desctiption, without having the full list in all lines.
" To get the file I actually have, run
" :%s/бакло/ЖжФфЭэЗзЧчБбАаДдВЬвьЪъЫыСсЕеёНнЮюІіКкМмИиЙйПпЛлОоРрЯяГгТтЦцШшЩщХхУу/g
syn match russianWordOk "[бакло]\+"
syn match russianWordError "[бакло][a-zA-Z0-9_]\+"hs=s+1
syn match russianWordError "[a-zA-Z0-9_]\+[бакло]"he=e-1
syn match russianWordError "[бакло][a-zA-Z0-9_]\+[бакло]"hs=s+1,he=e-1
然而,像»облaко«(現在是ASCII),高亮仍然將標誌着»обл«爲有效,»一個«爲無效,»к«因爲它不是關鍵字的一部分(它是匹配的russianWordError關鍵字的一部分),最後剩下的»о«再次有效。我想要的是讓整個單詞成爲匹配的russianWordError關鍵字的一部分,但仍然只是將「a」突出顯示爲非法。有沒有辦法,如果是的話,我該如何做到這一點?
「\%(」?)的含義是什麼? –
它啓動一個非捕獲組,比'\('更有效。 –