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


当前回答

:%s/\r\+//g

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

其他回答

这是我的方式。我在DOS EOL中打开了一个文件,当我保存该文件时,它将自动转换为Unix EOL:

autocmd BufWrite * :set ff=unix

更改视图中的行尾:

: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

将文件目录从DOS转换为Unix

使用命令行和sed,查找当前目录中扩展名为“.ext”的所有文件,并删除所有“^M”

@ https://gist.github.com/sparkida/7773170

find $(pwd) -type f -name "*.ext" | while read file; do sed -e 's/^M//g' -i "$file"; done;

此外,如前一个答案所述,^M=Ctrl+V+Ctrl+M(不要只键入插入符号“^”和M)。

可以使用以下命令::%s/^V^M//g其中“^”表示使用CTRL键。

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

我的工作替代命令是

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

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

:%s/^M/\r/g