更新了 mccvim,现在无法获取 $HOME/.vimrc

updated mccvim, now cannot source $HOME/.vimrc

:version
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Oct 21 2017 01:21:26)
MacOS X (unix) version
Included patches: 1-1207

我的 .vimrc 有 :nmap ,s :source ~/.vimrc 我刚刚安装完 mccvim 就尝试了,但出现了这些错误:

Error detected while processing /Users/jk/.vimrc:
line   18:
E15: Invalid expression: 0^M
line   20:
E15: Invalid expression: has("gui_running") && has("menu")^M
line   99:
E15: Invalid expression: 0^M
line  101:
E15: Invalid expression: has("gui_running") && has("menu")^M
line  203:
E15: Invalid expression: 0^M
line  205:
E15: Invalid expression: has("gui_running") && has("menu")^M

我根本没有在 .vimrc 中找到 '0^M'。

更新前一切正常;发生什么事了?

类 Unix 系统(包括 OSX)和 Windows 对于 "end of line" 应该是什么样子有不同的约定。 Unix使用LF(ASCII0A,也表示为^J); Windows 使用 CRLF(ASCII 0D0A,也表示为 ^M^J

Vim 可以使用这两种文件,具体取决于其 fileformats (ffs) 设置。 set ffs=unix,dos 将使 Vim 尝试猜测文件的格式,并相应地设置 fileformat (ff)。但是,如果 ffs 设置为 unix,则 Vim 不会尝试猜测,ff 设置为 unix;在此设置下,如果文件保存为 Windows(即具有 CRLF 行结尾),LF 将被解释为换行符,而 CR 将显示为 ^M。 Vim脚本不知道如何处理 ^M,并抱怨。

要将您的文件转换为 Unix 格式(推荐操作,因为您的文件对于您正在使用的操作系统来说是陌生的),运行这些命令:

:e ++ff=dos .vimrc
:setl ff=unix
:w