4

我最近安装了 cygwin(因为我仅限于 Windows 操作系统)并希望在其中使用 Vim。一切都已安装,我可以轻松访问 vim 并可以修改 .vimrc 等。从之前的帖子中,我了解到我的插件必须在 Windows 操作系统的 vimfiles 中并且已经这样做了。但是,现在当我尝试验证病原体时,我收到一条错误消息:

E492: Not an editor command: ^M (this repeats a couple times)
E15: Invalid expression: exists("g:loaded_pathogen") || &cp^M
E117: Unknown function: pathogen#infect

我的 .virmc (同样非常基本,只是试图启动一切)

version 6.0
if &cp | set nocp | endif
let s:cpo_save=$cpo
enter code here
set cpo&vim
map! <C-Home> <C-Home>
map! <C-End> <C-End>
let &cpo=s:cpo_save
unlet s:cpo_save
set autoindent
set ff=unix
set background=dark
set backspace=2
set fileencodings=ucs-bom,utf-8,default,latin1
set helplang=en
set history=50
set laststatus=2
set ruler
set shelltemp
set viminfo='100,<50,s10,h
set window=55
" vim: set ft=vim :
call pathogen#infect()
syntax on
filetype plugin indent on

问候,

4

3 回答 3

3

从 shell 中,尝试执行以下命令:

find ~/.vim -type f -exec dos2unix \"{}\" \;

这会将您~/.vim目录下的所有文件转换为 unix 文件格式。它应该消除^M您看到的错误。

于 2012-12-19T22:03:34.990 回答
0

在您的 .vimrc 文件中,我注意到

set ff=unix

但是在 vim 中,下面的命令解释了一些事情,

:help dos-file-formats

If the 'fileformat' option is set to "dos" (which is the default), Vim accepts
a single <NL> or a <CR><NL> pair for end-of-line (<EOL>).  When writing a
file, Vim uses <CR><NL>.  Thus, if you edit a file and write it, Vim replaces
<NL> with <CR><NL>.             

If the 'fileformat' option is set to "unix", Vim uses a single <NL> for <EOL>
and shows <CR> as ^M.

You can use Vim to replace <NL> with <CR><NL> by reading in any mode and
writing in Dos mode (":se ff=dos").
You can use Vim to replace <CR><NL> with <NL> by reading in Dos mode and
writing in Unix mode (":se ff=unix").

Vim sets 'fileformat' automatically when 'fileformats' is not empty (which is
the default), so you don't really have to worry about what you are doing.

所以,你应该尝试删除

set ff=unix

行,或修复文件的行尾。

于 2012-12-19T20:44:52.197 回答
0

我只是有同样的问题。上述在捆绑文件上调用“dos2unix”的解决方案(由 nullrevolution 提出)应该可以解决当前插件的问题。

对于未来,我发现我的问题是由于将 git repos 克隆到 bundles 目录并将 git config core.autocrlf 设置为 true 引起的。在我将 git config core.autocrlf 设置回 false 后,我再次 git 克隆了插件,它又回到了 UNIX-y 文件结尾。

于 2013-01-23T00:04:10.460 回答