2011-12-09 41 views
21

複製粘貼從維基百科進入VIM後,我得到這個:vim:如何搜索/替換特殊字符?

1 A 
    2 
    3 [+] Métier agricole<200e> – 44 P • 2 C 
    4 [×] Métier de l'ameublement<200e> – 10 P 
    5 [×] Métier de l'animation<200e> – 5 P 
    6 [+] Métier en rapport avec l'art<200e> – 11 P • 4 C 
    7 [×] Métier en rapport avec l'automobile<200e> – 10 P 
    8 [×] Métier de l'aéronautique<200e> – 15 P 

的問題是,<200e>只是一個字符。

我想知道如何把它放在一個查找/替換(通過/:)。

+0

哪個頁面是它呢? –

回答

23

檢查幫助\%u

 
           /\%d /\%x /\%o /\%u /\%U E678 

\%d123 Matches the character specified with a decimal number. Must be 
     followed by a non-digit. 
\%o40 Matches the character specified with an octal number up to 0377. 
     Numbers below 040 must be followed by a non-octal digit or a non-digit. 
\%x2a Matches the character specified with up to two hexadecimal characters. 
\%u20AC Matches the character specified with up to four hexadecimal 
     characters. 
\%U1234abcd  Matches the character specified with up to eight hexadecimal 
     characters. 

這些都是你可以使用序列。看起來你有兩個字節,所以\%u200e 應該匹配它。無論如何,這很奇怪。 UTF-8/ASCII中的20是空格 字符,而0e是^ N。檢查你的編碼設置。

+1

'u200e'在UTF-8中從不被編碼爲'\ x20 \ x0e',它被編碼爲* three * bytes'\ xE2 \ x80 \ x8E',您可以通過運行'echo'來測試它\ u200E「是#「\ xE2 \ x80 \ x8E」':如果'encoding'選項等於'utf-8',它將輸出1。所以,這個序列與空格或換行符沒有關係。 – ZyX

+0

謝謝@ZyX,現在更清晰了。我應該花一點時間來了解更多關於UTF-8的內容,但我經常面對這些並不是很瞭解它。如果您知道任何必須閱讀的文檔,請告訴我。 – sidyll

+0

@ZyX我認爲'\ u202E'的真正編碼是'\ xE2 \ x80 \ xAE'而不是我現在看到的一點 – sidyll

4

如果要處處快速選擇這個沒用的性格和更換/擺脫它,你可以:

  1. 通過之前和之後加入一個空間隔離奇怪的人物之一,因此它成爲一個「單詞」
  2. 使用*命令來搜索光標下的單詞。如果您有set hlsearch,則應該看到突出顯示所有多餘字符的發生。
  3. 頂替最後通過別的搜索項目,在全球範圍: :%s//something else/