在Vim的每一行结尾

当我使用vim和其他编辑器编辑源代码文件时,有时候会在每行的末尾显示这些^ M字符。 我认为这与在Windows中编辑文件然后在Linux中有关。 我怎样才能自动删除所有这些?

作为命令,键入

 :%s/^M$// 

(要获得^ M,请按^ V ^ M,其中^是大多数键盘上的CTRL)

去掉DOS行尾的一个简单方法是使用ff选项:

 :set ff=unix :wq 

现在你的文件又回到了老式的Unix方式。

如果你想添加 DOS行结束符(保持打印机快乐,或者与没有好工具的Windows朋友一起传输文件),你可以很容易地走相反的方向:

 :set ff=dos :wq 

你可以这样做:

 :set fileformats=dos 

它会隐藏^M ,而不会触摸文件。

有一个名为dos2unix的程序,应该为你删除这些程序。 Windows使用不同的行尾字符,这就是为什么会发生这种情况。

这对我来说是一个文件,只有一行:

首先find所有匹配

 :%s/^M// 

(要获得^M ,请按^ V ^ M,其中^是大多数键盘上的Ctrl

然后用换行符replace

 :%s//\r/g 

组合命令是:

 :%s/^M/\r/g 

我倾向于在重新打开之前通过fromdos运行折磨的文件。 fromdostofrodos软件包的一部分。

问题的根源可能是通过FTP传输。 将这些文件从一个盒子传送到另一个盒子时,请确保使用ASCII传输。 使用命令“ASC”。

 " put this in your ~/.vimrc file and :source ~/.vimrc " then you can do: Dos2Unix " dos2unix ^M fun! Dos2unixFunction() let _s=@/ let l = line(".") let c = col(".") try set ff=unix w! "%s/\%x0d$//e catch /E32:/ echo "Sorry, first save the file." endtry let @/=_s call cursor(l, c) endfun com! Dos2Unix keepjumps call Dos2unixFunction() 

mcedit:shift + f2,设置unix格式(LF),好的