我有一个文件,其中包含一些不可打印的字符,如 ^C 或 ^B,我想查找并替换这些字符,我该怎么做?
问问题
47421 次
7 回答
84
仅删除控制符号:
:%s/[[:cntrl:]]//g
删除不可打印的字符(请注意,在 ~8.1.1 之前的版本中,这也会删除非 ASCII 字符):
:%s/[^[:print:]]//g
如果您有一些不可打印的非控制字符,例如零宽度空格,则可以看出它们之间的区别:
于 2013-04-21T19:43:41.917 回答
48
假设您想用 C 替换 ^C:
:%s/CtrlVC/C/g
其中表示在按住的CtrlVC同时键入 V 然后 C。Ctrl
CtrlV让您输入控制字符。
于 2010-10-02T04:02:52.167 回答
13
将文件保存在 vim 中后尝试此操作(假设您在 Linux 环境中)
:%!tr -cd '[:print:]\n'
于 2012-02-14T13:47:06.733 回答
9
这里使用 Vim 的控制字符的答案都不适合我。我必须输入一个 unicode 范围。
:%s/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F]//g
在另一篇文章中找到了该 unicode 范围:https ://stackoverflow.com/a/8171868/231914
于 2016-12-15T16:29:26.987 回答
5
您可以使用:
:%s/^C//g
要^C
按住 control 键,请按V
then C
(同时按住 control 键),^C
将出现 。这将找到所有事件并将它们替换为空。
要删除两者^C
,^B
您可以执行以下操作:
:%s/^C\|^B//g
于 2010-10-02T04:04:20.490 回答
4
其他答案中未提及的选项。
删除具有长十六进制代码的特定 unicode 字符,例如<200b>
:
:%s/\%U200b//g
于 2021-03-08T19:48:38.443 回答