如果我打开在Windows中创建的文件,所有行都以^M结尾。如何一次删除这些字符?
当前回答
以下步骤可以将DOS的文件格式转换为Unix:
:e ++ff=dos Edit file again, using dos file format ('fileformats' is ignored).[A 1]
:setlocal ff=unix This buffer will use LF-only line endings when written.[A 2]
:w Write buffer using Unix (LF-only) line endings.
参考:文件格式
其他回答
将文件目录从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)。
dos2unix是一个命令行实用程序,可以执行此操作,或者:如果您使用Ctrl-v Ctrl-M输入^M,则:%s/^M//g将执行此操作;或者您可以:set ff=unix,Vim将为您执行此操作。
有关于文件格式设置的文档,Vimwiki有一个关于行尾转换的全面页面。
或者,如果你经常来回移动文件,你可能不想转换它们,而是要转换它们:set ff=dos,这样Vim就会知道它是一个dos文件,并使用dos约定来换行。
我找到了一个非常简单的方法:用nano:nano-file.txt打开文件
按Ctrl+O保存,但在按Enter键之前,按:Alt+D在DOS和Unix/Linux行结尾之间切换,或按:Alt+M在Mac和Unix/Linux行结尾之间转换,然后按Enter键保存,按Ctrl+X退出。
:%s/\r\+//g
在Vim中,它去掉所有回车符,只留下换行符。
发件人:文件格式
[Esc]:%s/\r$//