2013-03-28 16 views
0

我想用「é」來搜索並替換「< e9>」。如何用vé中的é替換<e9>

:%s/< E9>/E/G

不工作,但< E9>似乎VIM特殊字符

/Ctrl + V xe9

找到正確的「é」,但沒有找到「< E9>」

,如果我在< E9>和我類型:ASCII。我已經得到了這樣的結果:

< E> 233,六00e9,八路351

,如果我在 「E」 和I型:ASCII我已經得到了這樣的結果:

< E> 233,六00e9,八路351

回答

4

您的文字已經包含了適當的é字符(如圖中:ascii命令),它只是一個由Vim不一樣,顯示它。 (您可以使用另一個文本列表器/編輯器進行驗證。)

如何顯示字符受'isprint'選項的控制。它的幫助說:

當「編碼」是Unicode一個,非法字節從128到255的 顯示爲<xx>,與一個字節的十六進制值。

因此,假設您沒有更改'isprint'值,您可能在檢測編碼時遇到問題。檢查

:set encoding? fileencodings? fileencoding? 

並且正確。

+0

編碼= UTF-8 fileencodings = UTF-8 fileencoding = – ChoiZ 2013-03-28 20:01:00

+3

@ChoiZ:您的文件可能是編碼爲LATIN1(又名ISO-8859-1,或者0xE9是é的其他編碼,如cp1252),但是您的'fileencodings'設置會導致它始終以utf-8加載(其中0xE9本身無效),因此Vim顯示''格式。您可以使用':e ++ enc = latin1'將文件加載爲latin1。如果你想將它轉換爲UTF-8,然後用':set fenc = utf-8 | w'(該字符將被寫爲兩個字節:0xC3 0xA9)進行跟蹤。 – 2013-03-29 06:18:01

+0

偉大的答案@ChrisJohnsen!我可以指定將某些行轉換爲latin1嗎?並讓其他人在UTF8? – ChoiZ 2013-03-31 10:14:38

0

AFAIK <e9>是一個單字符以某種方式損壞與編碼轉換。

在命令模式下,當您的光標位於<e9>時,給出命令yl。這會使字符被緩衝。然後通過發出命令/<C-R>-(包括進入搜索模式,按CTRL+R並按-)來搜索被抽出的字符。您的搜索應以文本形式查找所有<e9>字符。最後做用過去的搜索結果包含取代

%s//é/g 
+0

好的命令yl但ctrl + r - 似乎不工作。 – ChoiZ 2013-03-28 07:52:15

+0

通常情況下,它應該可以工作,但這可能不是非法角色的情況。 – infiniteRefactor 2013-03-28 07:59:23

+0

再試''',即'CTRL-R'後跟'''。連字符寄存器'--'不是正確的。 – glts 2013-03-28 13:05:41