我有一个带有一些不可打印字符的文件,它们显示为^ C或^ B,我想找到并替换这些字符,我该怎么做呢?
答案 0 :(得分:62)
仅删除控制符号:
:%s/[[:cntrl:]]//g
删除不可打印的字符(请注意,在~8.1.1之前的版本中,这也会删除非ASCII字符):
:%s/[^[:print:]]//g
如果您有一些不可打印的非控制字符,例如,可以看到它们之间的区别。 zero-width space:
答案 1 :(得分:34)
假设你想用C代替^ C:
:%s/CtrlVC/C/g
其中 Ctrl V C 表示在按住 Ctrl 的同时键入V然后键入C.
Ctrl V 可让您输入控制字符。
答案 2 :(得分:10)
在vim中保存文件后尝试此操作(假设您在Linux环境中)
:%!tr -cd '[:print:]\n'
答案 3 :(得分:6)
这里使用Vim控制字符的答案都不适合我。我不得不进入unicode范围。
:%s/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F]//g
在另一篇帖子中找到了unicode范围:https://stackoverflow.com/a/8171868/231914
答案 4 :(得分:5)
您可以使用:
:%s/^C//g
要获得^C
按住控制键,请按V
然后按C
(按住控制键两者),然后会出现^C
。这将找到所有事件,并替换它们。
要删除^C
和^B
,您可以执行以下操作:
:%s/^C\|^B//g
答案 5 :(得分:5)
答案 6 :(得分:1)
其他答案中未提及的选项。
删除带有长十六进制代码的特定 unicode 字符,例如<200b>
:
:%s/\%U200b//g