如何更换或VIM正则表达式找到非打印字符?

问题描述 投票:35回答:6

我有一些上来如^ C或^ B,我要查找和替换这些字符非打印字符的文件,我怎么去这样做?

regex vim non-printable
6个回答
34
投票

假设你想替换C ^ C:

:%s/CtrlVC/C/g

其中CtrlVC指V型然后℃,同时按住Ctrl按压。

CtrlV让你输入控制字符。


63
投票

仅删除控制符号:

:%s/[[:cntrl:]]//g

删除非打印字符(请注意,在之前的版本8.1.1〜这消除非ASCII字符也可以):

:%s/[^[:print:]]//g

如果你有一些不可打印,非控制字符,例如,它们之间的区别可以看出zero-width space

enter image description here


10
投票

节省您的VIM文件后,试试这个(假设你是在Linux环境下)

:%!tr -cd '[:print:]\n'

6
投票

使用议会的控制字符这里的答案都不为我工作。我不得不进入一个unicode范围。

:%s/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x9F]//g

这unicode的范围在此等后发现:https://stackoverflow.com/a/8171868/231914


5
投票

您可以使用:

:%s/^C//g

要获得^C按住控制键,按V然后C(两者同时按住Ctrl键)和^C就会出现。这将找到所有出现的东西就没有更换。

要删除这两个^C^B你可以这样做:

:%s/^C\|^B//g

5
投票

您可以使用CTRL-V前缀进入它们,或者如果他们不容易分型,猛拉和使用CTRL-R "插入。

© www.soinside.com 2019 - 2024. All rights reserved.