: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行结束文件?
这在下面讨论:h :source_crnl
.
在UNIX系统上,它包括的Mac OS X,没有自动CRLF检测,并在一个线的端部的实际CR 将 可能产生一个错误,例如在一个映射.从帮助:
在其他系统上,Vim希望":source"ed文件以<NL>结尾.这些总能奏效.如果您使用的文件具有<CR> <NL> <EOL>(例如,在MS-DOS上生成的文件),则所有行都将具有尾随<CR>.
为了获得最佳兼容性,最好让Vim脚本文件始终使用NL换行符.这些将始终在任何地方工作,前提是脚本的第一行由于某种原因在CR中结束并且'fileformats'
不为空(默认情况下它不是空的).
简而言之,考虑将您的行结尾转换为LF.