vi文件中~B字符代表什么?如何搜索替换删除该字符?
解决Vi编辑器中~B字符的识别与删除问题
~B字符的本质
你看到的蓝色~B是Vi对**高位ASCII字符(扩展ASCII字符)**的显示形式,这类字符的字节值大于0x7F(127)。~B对应的是十六进制值0x82的字符:Vi用~标识高位字节区间(0x80-0xFF),后面的字母是将字节值减去0x80后对应的ASCII字符——0x82-0x80=0x02,对应ASCII的B(即^B),因此显示为~B。
删除~B字符的方法
你可以通过以下几种方式批量删除这类字符:
- 方法1:通过十六进制值精准匹配
在Vi命令模式下执行:
:%s/\%x82//g
\%x82表示匹配十六进制为0x82的字符(也就是你看到的~B),//g表示全局替换为空(即删除)。
方法2:直接输入原字符匹配
如果能选中单个~B字符,也可以用Ctrl+V的方式输入该字符进行替换:- 进入命令模式,输入
:%s/ - 按下
Ctrl+V,再输入文件中的~B字符(直接粘贴也可) - 输入
//g后回车,完成全局删除
- 进入命令模式,输入
方法3:批量删除所有高位ASCII字符
如果文件中还有其他类似高位字符,想要一次性清除所有0x80-0xFF区间的字符,执行:
:%s/\%x80-\%xFF//g
验证操作结果
执行替换后,可输入:set list命令显示所有不可见字符,确认~B是否已全部删除,之后用:set nolist恢复正常显示。
内容的提问来源于stack exchange,提问作者SDMark
相关产品推荐
相关产品推荐

