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

参考:文件格式

其他回答

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

dos2unix是一个命令行实用程序,可以执行此操作,或者:如果您使用Ctrl-v Ctrl-M输入^M,则:%s/^M//g将执行此操作;或者您可以:set ff=unix,Vim将为您执行此操作。

有关于文件格式设置的文档,Vimwiki有一个关于行尾转换的全面页面。

或者,如果你经常来回移动文件,你可能不想转换它们,而是要转换它们:set ff=dos,这样Vim就会知道它是一个dos文件,并使用dos约定来换行。

我更喜欢使用以下命令:

:set fileformat=unix

您还可以使用mac或dos分别将文件转换为mac或MS-dos/Windows文件约定。如果文件已经是正确的格式,它也不会起作用。

有关更多信息,请参阅Vim帮助:

:help fileformat

我想要用换行符代替^M。Perl拯救:

perl -pi.bak -e 's/\x0d/\n/g' excel_created.txt

或写入标准输出:

perl -p -e 's/\x0d/\n/g' < excel_created.txt
tr -d '\15\32' < winfile.txt > unixfile.txt

(请参见:在Unix和Windows文本文件之间转换)