我经常需要编辑脚本文件,解释器将文件最后一行上有EOL标记的文件视为错误(即文件将CRLF视为“换行符”,而不是“行结尾” )。
目前,我使用二进制模式(命令行上的-b)在Vim中打开这些文件。它会在最后一行自动检测缺少EOL并适当设置“noeol”选项,这会阻止它在最后一行写入EOL。
因为该文件具有CRLF行结尾,所以在行的末尾会得到很多^M
(因为它似乎只解释了二进制模式下的Unix风格的行结尾)。我无法在文本模式下打开它,因为非二进制文件会忽略“noeol”选项。
这非常烦人,我总是要记得在每一行的末尾手动输入^M
!有没有什么方法可以强制它在二进制模式下接受DOS风格的行结尾,或者强制它在文本模式下听EOL选项?
答案 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
(一个特殊字符)之外,完全按照所示键入该命令。你产生它的方法是同时按下Ctrl
和v
然后点击Enter
(在点击输入之前释放CRTL + V)