代码之家  ›  专栏  ›  技术社区  ›  rmeador

用vim编辑最后一行没有下线标记但有crlf行结尾的文件

  •  3
  • rmeador  · 技术社区  · 14 年前

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

    目前,我使用二进制模式在vim中打开这些文件(在命令行中为-b)。它自动检测最后一行的下线不足,并适当设置“noeol”选项,从而防止它在最后一行写下线。

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

    这很烦人,我总是要记住手动输入 ^ m 在每一行的末尾!有什么方法可以强制它接受二进制模式下的dos风格的行结尾,或者强制它在文本模式下监听eol选项吗?

    2 回复  |  直到 14 年前
        1
  •  0
  •   Winter    14 年前

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

        2
  •  0
  •   Drew    14 年前

    是的,您不需要手动输入 ^M 在每一行;那将是乏味的!尝试输入以下内容:

    :set ff=dos
    

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

    在进一步的回顾中,可能需要进行全局搜索和替换,所以请尝试一下。(我今天早些时候测试了这个,它在一个unix文件上运行,这个文件是在windows xp中用gvim编辑的,而不是在二进制模式下)。

    :%s/^M//g
    

    键入与所示完全相同的命令,但 ^ m ,这是一个特殊的字符。你制作它的方式是 Ctrl v 一起打 Enter (在按下回车键之前,松开CRTL+V)