在带有dos行结尾的vimscript文件上使用vim的:source
命令会给我一些错误,它无法处理^M
个字符。
^M
个字符是dos行结尾的一部分,但不是unix行结尾。所以它尝试使用unix文件格式:source
文件。
问题是,我设置了:set fileformats=unix,dos
。当打开和编辑文件(不是:source:
-ing)时,没有行结束问题。 Vim看到一个带有纯dos行结尾的文件,根据fileformats
,它会相应地调整自己。
:help fileformats
只给出了 dos systems 的最基本线索,如果你有:set fileformats=unix,dos
,vim会执行一个特殊的检测,它应该使用它(并且作为一个不相关的详细信息,此:source
检测对混合行结尾的处理方式与打开文件的处理方式不同。
我在一个现代的mac系统上,如何将它带到:source
一个dos行结束文件?
答案 0 :(得分:6)
这在:h :source_crnl
讨论。
在包含Mac OS X的UNIX系统上,没有自动CRLF检测,并且行 的结尾处的实际CR可能引发错误, 例如在映射中。来自帮助:
在其他系统上,Vim希望“:source”ed文件以< NL>结尾。这些总能奏效。如果您使用的文件包含< CR>< NL> < EOL> s(例如,在MS-DOS上生成的文件),所有行都将具有尾随< CR>。
为获得最佳兼容性,最好让Vim脚本文件始终使用NL换行符。这些将始终在任何地方工作,前提是脚本的第一行由于某种原因不在CR中结束且'fileformats'
不为空(默认情况下它不为空)。
简而言之,请考虑将您的行结尾转换为LF。