如何使vim:source接受不同的行结尾?

Ein*_*Ein 6 vim line-endings

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

^M字符的DOS行结束的一部分,而不是Unix行结尾.所以它正在尝试:source使用unix文件格式的文件.

问题是,我已经:set fileformats=unix,dos开始了.当打开编辑文件(不:source:-ing)没有结束的问题行.Vim看到一个带有纯dos行结尾的文件,并根据fileformats它调整自己.

:help fileformats只给出最简单的线索,如果你有dos系统:set fileformats=unix,dos,vim执行它应该使用的临时检测(并且作为一个不相关的细节,这个:source检测处理混合行结尾不同于打开文件).

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

glt*_*lts 6

这在下面讨论:h :source_crnl.

在UNIX系统上,它包括的Mac OS X,没有自动CRLF检测,并在一个线的端部的实际CR 可能产生一个错误,例如在一个映射.从帮助:

在其他系统上,Vim希望":source"ed文件以<NL>结尾.这些总能奏效.如果您使用的文件具有<CR> <NL> <EOL>(例如,在MS-DOS上生成的文件),则所有行都将具有尾随<CR>.

为了获得最佳兼容性,最好让Vim脚本文件始终使用NL换行符.这些将始终在任何地方工作,前提是脚本的第一行由于某种原因在CR中结束并且'fileformats'不为空(默认情况下它不是空的).

简而言之,考虑将您的行结尾转换为LF.