2010-06-10 44 views
25

我是個白癡。vim中的正則表達式Unicode字符

有人從Microsoft Word中剪切並粘貼一些文本到我可愛的html文件中。

我現在有

我想要做一個正則表達式替換這些Unicode字符,而不是常規的報價符號(即報價顯示爲< 92>文本),但我無法選擇它們。

:%s/\u92/'/g 
:%s/\u5C/'/g 
:%s/\x92/'/g 
:%s/\x5C/'/g 

......全部失敗。我的google-fu讓我失望了。

回答

47

:help regexp(輕微編輯),您需要使用一些特定的語法選擇Unicode字符在Vim的正則表達式:

\%u match specified multibyte character (eg \%u20ac) 

也就是說,要搜索的Unicode字符用十六進制代碼20AC,進入這個到你的搜索模式:

\%u20ac 

的字符搜索模式的全表包含一些附加選項:

\%d match specified decimal character (eg \%d123) 
\%x match specified hex character (eg \%x2a) 
\%o match specified octal character (eg \%o040) 
\%u match specified multibyte character (eg \%u20ac) 
\%U match specified large multibyte character (eg \%U12345678) 
+1

謝謝! 「rtfm」,因爲他們說... :) – aidan 2010-06-10 18:42:57

+0

感謝您幫助我找到vim中非常長的正則表達式文檔的正確部分,我發現很多人都投了票,但我不同意。簡單地從沒有上下文的文檔中粘貼幾行使得這個答案無益。在左邊包括三列簡直令人困惑,特別是沒有列標題(這裏沒有關聯)。我不知道這一點上下文應該是什麼意思「|/... |」。它不會出現在我的vim幫助中。答案中真正有用的部分是:「(例如\%u20ac)」。必須仔細查找。 – Mars 2017-05-17 00:30:52

+0

@Mars:你應該編輯答案,使其更有幫助。在堆棧溢出時鼓勵編輯! – michaelmichael 2017-05-18 03:16:22