我想搜索并替换“< e9 >”通过“é”。
:%S /< E9 > / E / G
不起作用,但< e9 >似乎是vim特殊字符
/ ctrl + v xe9
只找到正确的“é”而不是“< e9 >”
如果我在< e9 >我输入:ascii我得到了这个结果:
&LT e取代; 233,Hexa 00e9,Octal 351
如果我在“é”上并输入:ascii我得到了这个结果:
&LT e取代; 233,Hexa 00e9,Octal 351
答案 0 :(得分:4)
您的文本已经包含正确的é
字符(如:ascii
命令所示),只是Vim不会像那样显示它。 (您可以使用其他文本列表/编辑器进行验证。)
字符的显示方式由'isprint'
选项控制。它的帮助说:
当'encoding'是Unicode时,非法字节从128到255 显示为
<xx>
,带有字节的十六进制值。
因此,假设您没有更改'isprint'值,您可能会遇到检测编码的问题。检查
:set encoding? fileencodings? fileencoding?
并纠正。
答案 1 :(得分:0)
AFAIK <e9>
是一个单独的字符,在某种程度上会因编码转换而损坏。
在命令模式下,当光标位于<e9>
时,请输入命令yl
。这会将角色拉到缓冲区。然后通过提供命令/<C-R>-
来搜索被拉出的角色(这涉及进入搜索模式,按CTRL+R
并按-
。)您的搜索应找到所有<e9>
字符文本。最后使用最后一个搜索结果进行替换:
%s//é/g