我想用“é”搜索并替换“< e9 >”。
:%s/< e9 >/é/g
不起作用,但 < e9 > 似乎 vim 特殊字符
/ ctrl+v xe9
只找到正确的“é”而不是“< e9 >”
如果我在 < e9 > 上并且我输入 :ascii 我得到了这个结果:
<é> 233,六进制 00e9,八进制 351
如果我在“é”上并且我输入 :ascii 我得到了这个结果:
<é> 233,六进制 00e9,八进制 351
您的文本已经包含正确的é
字符(如:ascii
命令所示),只是 Vim 没有那样显示它。(您可以使用另一个文本列表器/编辑器进行验证。)
字符的显示方式由'isprint'
选项控制。它的帮助说:
当 'encoding' 是 Unicode 时,从 128 到 255 的非法字节显示为
<xx>
,字节的十六进制值。
因此,假设您没有更改 'isprint' 值,您可能会遇到编码检测问题。查看
:set encoding? fileencodings? fileencoding?
并且正确。
AFAIK<e9>
是一个因编码转换而损坏的单个字符。
在命令模式下,当您的光标位于<e9>
give command上时yl
。这会将字符拉到缓冲区。然后通过给出命令搜索被拉出的字符/<C-R>-
(这涉及进入搜索模式,按下CTRL+R
并按下-
。)您的搜索应该找到<e9>
文本中的所有字符。最后使用最后的搜索结果进行替换:
%s//é/g