使用vim编辑文件,该文件在最后一行没有EOL标记,但具有CRLF行结尾

时间:2010-04-20 21:14:13

标签: vim binaryfiles line-endings newline

我经常需要编辑脚本文件,解释器将文件最后一行上有EOL标记的文件视为错误(即文件将CRLF视为“换行符”,而不是“行结尾” )。

目前,我使用二进制模式(命令行上的-b)在Vim中打开这些文件。它会在最后一行自动检测缺少EOL并适当设置“noeol”选项,这会阻止它在最后一行写入EOL。

因为该文件具有CRLF行结尾,所以在行的末尾会得到很多^M(因为它似乎只解释了二进制模式下的Unix风格的行结尾)。我无法在文本模式下打开它,因为非二进制文件会忽略“noeol”选项。

这非常烦人,我总是要记得在每一行的末尾手动输入^M!有没有什么方法可以强制它在二进制模式下接受DOS风格的行结尾,或者强制它在文本模式下听EOL选项?

2 个答案:

答案 0 :(得分:0)

可以在编辑之前运行dos2unix命令吗?

答案 1 :(得分:0)

是的,您不需要在每一行上手动输入^M;这将是乏味的!尝试输入:

:set ff=dos

您可能还会发现本文很有用:change end-of-line format for dos-unix

在进一步审查时,可能需要全局搜索和替换,所以请试一试。 (我今天早些时候对它进行了测试,它在Windows XP中使用gvim进行编辑的unix文件,而不是二进制模式。)

:%s/^M//g

除了^M(一个特殊字符)之外,完全按照所示键入该命令。你产生它的方法是同时按下Ctrlv然后点击Enter(在点击输入之前释放CRTL + V)