求助vim诡异的^M问题

 我来答
松映寒Vg
2017-08-19 · TA获得超过651个赞
知道小有建树答主
回答量:350
采纳率:66%
帮助的人:171万
展开全部

问题解释

这是一个不同操作系统对于文本文件换行符规定的不同引发的问题:能看到^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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式