如果我打开在Windows中创建的文件,所有行都以^M结尾。如何一次删除这些字符?


当前回答

在Vim中,键入:

:w !dos2unix %

这将把当前缓冲区的内容通过管道传输到dos2unix命令,并在当前内容上写入结果。之后,Vim将要求重新加载文件。

其他回答

:%s/\r\+//g

在Vim中,它去掉所有回车符,只留下换行符。

更改视图中的行尾:

:e ++ff=dos
:e ++ff=mac
:e ++ff=unix

这也可以用作保存操作(:w单独保存不会使用屏幕上看到的行尾):

:w ++ff=dos
:w ++ff=mac
:w ++ff=unix

您可以从命令行使用它:

for file in *.cpp
do 
    vi +':w ++ff=unix' +':q' "$file"
done

关于让^M出现的评论是对我有用的。在我的vi中只键入“^M”没有得到任何结果(未找到)。不过,CTRL+V CTRL+M序列做得很好。

我的工作替代命令是

:%s/Ctrl-V Ctrl-M/\r/g

在我的屏幕上看起来是这样的:

:%s/^M/\r/g

我通常使用

:%s/\r/\r/g

这看起来有点奇怪,但由于Vim与linefeed的匹配方式,它起到了作用。我也觉得更容易记住:)

:g/Ctrl-v Ctrl-m/s///

CtrlM是字符\r,或回车符,DOS行结尾添加该字符。CtrlV告诉Vim在命令行中插入文字CtrlM字符。

作为一个整体,该命令将所有\r替换为无,并将它们从行的末尾删除。