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

参考:文件格式

其他回答

我找到了一个非常简单的方法:用nano:nano-file.txt打开文件

按Ctrl+O保存,但在按Enter键之前,按:Alt+D在DOS和Unix/Linux行结尾之间切换,或按:Alt+M在Mac和Unix/Linux行结尾之间转换,然后按Enter键保存,按Ctrl+X退出。

:set fileformat=unix将DOS转换为unix。

在VIM中:

:e ++ff=dos | set ff=unix | w!

带VIM的外壳:

vim some_file.txt +'e ++ff=dos | set ff=unix | wq!'

e++ff=dos-强制以dos格式打开文件。

set ff=unix-将文件转换为unix格式。

以下命令用于重新格式化当前目录中的所有.sh文件。我在Fedora操作系统上测试了它。

for file in *.sh; do awk '{ sub("\r$", ""); print }' $file >luxubutmp; cp -f luxubutmp $file; rm -f luxubutmp ;done

我通常使用

:%s/\r/\r/g

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