【问题标题】:Reading DOS/Windows Text File in Linux在 Linux 中读取 DOS/Windows 文本文件
【发布时间】:2011-01-09 09:43:21
【问题描述】:

众所周知,DOS/Windows 文件中的行结尾与 Unix/Linux 不同,所以每当我打开使用 Windows 创建的文件时,我会在每行后面看到数百个 ^M。许多人建议使用以下方法解决此问题:

set fileformat=dos

我试过了,但它不起作用,因为据我所知,它告诉 Vim 如何“保存”文件,而不是如何“读取”文件。我想要的是保持行尾不变,无论是 Linux、Windows 还是 MAC,正确读取它们,并在编辑后使用相同的格式保存文件。

有什么想法吗?

【问题讨论】:

    标签: vim line-endings


    【解决方案1】:
    1. 添加

      set fileformats=unix,dos,mac
      

      到你的 vimrc。

    2. 如果 vim 无法检测到正确的行尾,则在打开的文件中运行 :e ++ff=dos

    【讨论】:

    • 太棒了!所以你的意思是“set fileformats=unix,dos,mac”应该可以完成这项工作,但在我的情况下,它无法检测到正确的行尾?为什么会失败?我认为检测行尾没有什么困难,尤其是对于像 Vim 这样的高级编辑器。
    • @Rafid K. Abdullah 如果我没记错的话,它会因混合 LF/CRLF 行结尾而失败。
    【解决方案2】:
    " put this in your ~/.vimrc, resource then and try :Dos2Unix
    " dos2unix ^M
    fun! Dos2unixFunction()
        let _s=@/
        let l = line(".")
        let c = col(".")
        try
            set ff=unix
            w!
            "%s/\%x0d$//e
        catch /E32:/
            echo "sorry, first save your file."
        endtry
        let @/=_s
        call cursor(l, c)
    endfun
    com! Dos2Unix keepjumps call Dos2unixFunction()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-19
      • 1970-01-01
      • 2018-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多