求助vim诡异的^M问题
1个回答
展开全部
问题解释
这是一个不同操作系统对于文本文件换行符规定的不同引发的问题:能看到^M说明你用的是Unix系的操作系统,比如MacOS或者Ubuntu。这个问题本身其实和Vim并没有直接关系,只不过Vim帮助你看到了这个差异。
具体来说,Windows文本文件换行符规定默认为Carriage return + Line feed (CRLF),用C语言的转义字符表述就是:
"\r\n"
而Unix系操作系统对于文本文件换行符默认规定为'\n'。由于Vim对于'\r'字符的显示就是^M,所以在Windows电脑编辑过的文件在Unix系操作系统上显示时,行尾就会有奇怪的^M出现。
实验验证
为证明这一点,你可以在命令行输入以下命令:
echo $'e.g.\nWindows CRLF eol: \r\nUnix LF eol: \n' > file.txt
用Vim打开这个文件,你会发现文件中输入了'\r'的那一行结尾就会有一个^M。
解决方法
要想解决这个问题治标的方法是删掉所有^M字符:
:%s/^M//g
在Vim的normal mode里输入这个替换命令(^M的打法是Ctrl-v + Ctrl-M)
治本的方法就是不使用Windows电脑编辑文本文件,或者使用Vim来创建和编辑Windows电脑上的文本文件,并在Vim中使用设置:
set fileformats=unix,dos,mac
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询