如何搜索和替换不可打印的字符

时间:2010-05-09 16:54:32

标签: vim

我有一个从Word导出的文件,它用奇怪的unicode字符替换了所有引号,这些字符在vim中没有正确显示。 所以现在我想用引号替换这些字符,但我不知道如何在

中输入这个字符
:%s/???/'/g

字符看起来像这样:~U~R。但当然我不能用鼠标标记它们并粘贴在命令中。

3 个答案:

答案 0 :(得分:51)

您可以尝试设置编码类型,看看它是否修复了这些字符的标记:

:set encoding=utf-8

然后你可以直接使用它们。或者,您可以将光标放在不可打印的字符上,然后单击ga,它将显示该字符的十进制/十六进制/八进制代码,然后您可以将其替换为:

:%s/\%xYY/substitute/g

其中YY是char的十六进制代码,如果它是多字节的:

:%s/\%uYYYY/substitute/g

了解详情:

:help character-classes

答案 1 :(得分:7)

我通常:

  1. 使用以下字符删除字符:x
  2. 撤消我的更改:u
  3. 通过 c_CTRL-R 来代替::%s/^R"/'/g

答案 2 :(得分:1)

您也可以使用tr命令

过滤它

例如替换源自MacOs剪切和粘贴的hex a0 可以用如下的空格替换(\ 240是hex a0的八进制表示)

:.,$!tr "\240" " "