如果我打开在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