vim配置出这样的错,怎么解决?

_vimrc内容如下:set nocompatiblesource $VIMRUNTIME/vimrc_example.vimsource $VIMRUNTIME/mswin.vimbehave mswin:set nobackup:set numberfiletype onfiletype plugin onfiletype indent onset diffexpr=MyDiff()function MyDiff()  let opt = '-a --binary '  if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif  if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif  let arg1 = v:fname_in  if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif  let arg2 = v:fname_new  if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif  let arg3 = v:fname_out  if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif  let eq = ''  if $VIMRUNTIME =~ ' '    if &sh =~ '\<cmd'      let cmd = '""' . $VIMRUNTIME . '\diff"'      let eq = '"'    else      let cmd set diffexpr=MyDiff()function MyDiff()  let opt = '-a --binary '  if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif  if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif  let arg1 = v:fname_in  if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif  let arg2 = v:fname_new  if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif  let arg3 = v:fname_out  if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif  let eq = ''  if $VIMRUNTIME =~ ' '    if &sh =~ '\<cmd'      let cmd = '""' . $VIMRUNTIME . '\diff"'      let eq = '"'    else      let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'    endif  else    let cmd = $VIMRUNTIME . '\diff'  endif  silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eqendfunction错误提示:处理C:\Program Files\Vim\_vimrc时发生错误:第54行:E126:缺少:endfunction

看了一下你的配置文件,有一下的几个问题,首先在vimrc_example.vim中,nocompatible,nobackup,indent,plugin等选项已经定义好了,属于重复定义;然后就是backup最好不要关闭,不然很容易出现修改丢失,同时set confirm,这样当退出的时候会提醒你保存修改的文件;然后就是文件中定义了比较文件对比的函数,但这个函数似乎有重复部分(或许你黏贴的时候出了问题),而且我整理之后发现函数本身定义的十分繁琐,对比帮助文件中的举例(:help diff-diffexpr)发现,它已经给你定义好了,直接复制过去吧;最后就是这个配置文件缺少很多东西,需要好好完善一下。嗯,就这样,vim的学习曲线很陡,多看看别人的配置文件,然后多使用:help命令看看具体的什么意思,希望对你有帮助。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-20
这是因为有一个函数只定义到了一半,所以有语法错误。

如果你是复制别人写的 vimrc 的话,那可能是没复制全。建议你再找到那原始文件重新复制一次,看看是不是能向下翻页之类的,所以没拷全。本回答被网友采纳
第2个回答  2012-04-11
你最末尾按过 j了?
...
.... eq
endfunction
相似回答