在 Vim 中每行的末尾都有 ^ M

当我使用 Vim 和其他编辑器编辑源文件时,有时我会在每一行的末尾得到这些 ^M字符。 我认为这与在 Windows 和 Linux 上编辑文件有关。 我怎样才能自动删除所有这些?

94104 次浏览

有一个叫 Dos2unix的程序可以帮你去掉这些。Windows 使用不同的行结束字符,这就是为什么会出现这种情况。

作为命令,输入

:%s/^M$//

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

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

我倾向于在重新打开之前通过 fromdos运行受影响的文件。 fromdos托弗罗多斯软件包的一部分。

你可以这样做:

:set fileformats=dos

它将隐藏的 ^M的,而不接触文件。

这个方法在一个文件中很有效,所有的东西都在一行中:

先找到所有匹配的

:%s/^M//

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

然后用换行替换

:%s//\r/g

联合指挥将是:

:%s/^M/\r/g
" 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()

一个简单的方法去除 DOS 行结束是使用 ff选项:

:set ff=unix
:wq

现在你的文件又回到 Unix 的老路上了。

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

:set ff=dos
:wq

Shift + f2,设置 unix 格式(LF) ,OK