^在vim中每一行的末尾

时间:2009-07-10 16:48:41

标签: windows linux vim

当我使用vim和其他编辑器编辑源文件时,有时在行的末尾,我会在每行的末尾得到这些^ M个字符。我认为它与在Windows中编辑文件然后在linux中有关。如何自动删除所有这些?

9 个答案:

答案 0 :(得分:123)

作为命令,键入

:%s/^M$//

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

答案 1 :(得分:81)

剥离DOS行结尾的一种简单方法是使用ff选项:

:set ff=unix
:wq

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

如果你想添加 DOS行结尾(为了让打印机满意,或者与没有漂亮工具的Windows朋友一起传输文件),你可以轻松地走向相反的方向: / p>

:set ff=dos
:wq

答案 2 :(得分:33)

你可以这样做:

:set fileformats=dos

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

答案 3 :(得分:16)

有一个名为dos2unix的程序可以为你删除这些程序。 Windows使用不同的行尾字符,这就是发生这种情况的原因。

答案 4 :(得分:6)

这对我来说是一个文件,其中包含一行:

首先找到所有比赛

:%s/^M//

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

然后换成换行符

:%s//\r/g

组合命令将是:

:%s/^M/\r/g

答案 5 :(得分:2)

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

答案 6 :(得分:1)

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

答案 7 :(得分:0)

" 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()

答案 8 :(得分:0)

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