在新公司用Vim读代码,发现一些文件中出现了^M和^L之类的字符。用狗儿转了一圈,发现原来是Vim显示出了文件中的控制字符。类似的控制字符还有很多,详细可以参考这里的表格。
输入%s/^M//g打算去除它们的时候,却发现查找替换无法定位到想要的控制字符上。
找了好一会儿才发现,原来Vim的查找替换中输入控制字符必须用别的方法。
那就是在输入^M时,必须依次在键盘上敲入Ctrl+V和Ctrl+M。
写成键盘输入方法的话,就是:
%s/{Ctrl+V}{Ctrl+M}//g
另外在寻找的过程中发现用sed可以实现同样的功能。
# sed –e ‘s/\x0D//g’ ABC.c > DEF.c
找出控制字符^M的十六进制编码是0x0D,然后填写进去就可以了。
不过因为匹配Pattern的方法不同,这条替换在Vim中是找不要想要的控制字符的。