【问题标题】:How to make vim :source accept different line endings?如何使 vim :source 接受不同的行尾?
【发布时间】:2012-12-20 18:41:14
【问题描述】:

在带有 dos 行结尾的 vimscript 文件上使用 vim 的 :source 命令会给我带来无法处理 ^M 字符的错误。

^M 字符是 dos 行尾的一部分,但不是 unix 行尾的一部分。所以它试图:source使用unix文件格式的文件。

问题是,我设置了:set fileformats=unix,dos。当打开编辑文件(不是:source: -ing)没有行结束问题。 Vim 看到一个带有纯 dos 行结尾的文件,并根据fileformats 进行相应的调整。

:help fileformats 仅提供了最简单的线索,即在 dos 系统 上,如果您有 :set fileformats=unix,dos,vim 会执行它应该使用的临时检测(作为一个不相关的细节,这个 @ 987654330@ 检测处理混合行结尾的方式不同于 打开 文件)。

我在一个现代的mac系统上,我如何把它放到:source一个dos行结束文件?

【问题讨论】:

    标签: vim line-endings


    【解决方案1】:

    这在:h :source_crnl 讨论。

    在包括 Mac OS X 在内的 UNIX 系统上,没有自动 CRLF 检测,并且行尾的实际 CR 可能引发错误, 例如在映射中。来自帮助:

    在其他系统上,Vim 期望 ":source" 文件以 结尾。这些总是有效的。如果您使用的是带有 的文件(例如,在 MS-DOS 上创建的文件),所有行都将有一个尾随

    为了获得最佳兼容性,最好让 Vim 脚本文件始终使用 NL 换行符。只要脚本的第一行由于某种原因没有以 CR 结尾并且'fileformats' 不为空(默认情况下不为空),这些将始终有效。

    简而言之,考虑将行尾转换为 LF。

    【讨论】:

    • 进行此转换的简单方法是执行:set ff=unix,然后保存文件。 ...也就是说如果:set ff? 无论如何返回dos...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    • 2015-08-10
    • 1970-01-01
    相关资源
    最近更新 更多