我太蠢了。
有人从微软Word中把一些文本复制粘贴到了我的html文件中。
现在在文本中出现了这些Unicode字符,而不是常规的引号符号(例如,引号显示为<92>)。
我想进行正则表达式替换,但我很难选择它们。
:%s/\u92/'/g
:%s/\u5C/'/g
:%s/\x92/'/g
:%s/\x5C/'/g
...所有的尝试都失败了。我的谷歌技能也让我失望了。
从 :help regexp
(轻微编辑)中得知,在Vim中,您需要使用一些特定的语法来使用正则表达式选择Unicode字符:
\%u match specified multibyte character (eg \%u20ac)
那么,要搜索十六进制码为20AC的Unicode字符,请将其输入到搜索模式中:\%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)
ctrl-v
u
xxxx
,其中xxxx
是代码点。例如,输出欧元符号将是ctrl-v
u
20ac
。:%s/20 euro/20 <ctrl-v u 20ac>/gc
<ctrl-v u 20ac>
不是字面值,它是一系列按键,用于输出字符€
。
/\%u20ac
。请注意,我的翻译尽可能保留了原文的意思并使其更加通俗易懂,但没有进行进一步的解释或添加额外的内容。 - Iulian OnofreiU+FFFD
)与它们各自的编码(例如 UTF-8)是不同的。例如,我需要找到替换字符 �,因此使用/\%uFFFD
进行搜索。 - Jens