使用Vim编辑器时检测到错误消息

时间:2014-11-04 03:56:50

标签: vim

当我尝试使用vim打开文件进行编辑时,我收到以下消息并检测到错误消息。

   Jashs-MacBook-Pro:hello jashjacob$ vim hello.rb

--- Auto-Commands ---
filetypedetect  BufRead
*if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat | runtime! scripts.vim | endif
*if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat    && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#'^I|| getline(4) =~ '^#' || getline(5) =~ '^#') |   setf conf | endif
Error detected while processing /usr/share/vim/vimrc:
line   18:
E116: Invalid arguments for function line("'"") > 0 && line ("'"") <= line("$") |
E15: Invalid expression: line("'"") > 0 && line ("'"") <= line("$") |
Press ENTER or type command to continue

我的vim编辑器文件是否已损坏/修改?如何修复处理/usr/share/vim/vimrc时检测到的错误?

/usr/share/vim/vimrc配置文件包含以下内容

    " Configuration file for vim
set modelines=0         " CVE-2007-2438

" Normally we use vim-extensions. If you want true vi-compatibility
" remove change the following statements
set nocompatible        " Use Vim defaults instead of 100% vi compatibility
set backspace=2         " more powerful backspacing
set ai                  " auto indenting
set history=100         " keep 100 lines of history
set ruler               " show the cursor position
syntax on               " syntax highlighting
set hlsearch            " highlight the last searched term
filetype plugin on      " use the file type plugins

" When editing a file, always jump to the last cursor position
autocmd BufReadPost *
 if ! exists("g:leave_my_cursor_position_alone") |
 if line("'"") > 0 && line ("'"") <= line("$") |
 exe "normal g'"" |
 endif |
 endif

" Don't write backup file if vim is being called by "crontab -e"
au BufWrite /private/tmp/crontab.* set nowritebackup
" Don't write backup file if vim is being called by "chpass"
au BufWrite /private/etc/pw.* set nowritebackup

3 个答案:

答案 0 :(得分:1)

我不是vimscript大师,所以也许有人可以提供更多修复,但我可以建议,如果你只是想让vim再次工作,你可以注释掉这个功能。导致麻烦。在每行之前加上一个双引号("),你应该能够继续下去。 像这样:

" When editing a file, always jump to the last cursor position
"autocmd BufReadPost *
" if ! exists("g:leave_my_cursor_position_alone") |
" if line("'"") > 0 && line ("'"") <= line("$") |
" exe "normal g'"" |
" endif |
" endif

如果要保留此功能,可能需要学习一些vimscript。 :)

答案 1 :(得分:1)

您不支持在/ usr / share / vim /.

中执行任何操作

您编辑的文件不属于您,不应更改。这些是你可以做任何你想做的事情的文件和地方:

~/.vim/    <-- put your plugins and colorschemes in this directory
~/.vimrc   <-- add your options and mappings to this file

关于你的问题:

  • 这些行未通过插件添加,它们是由您或有权访问您计算机的其他人添加的。

  • 他们抛出一个错误,因为粘贴它们的傻瓜以某种方式认为删除the "original"(或this "original"或{{3}中的行继续反斜杠是个好主意邮件中的旧链接指向404,或$VIMRUNTIME/vimrc_example.vim中更简单的版本。

  • 永远不要运行您在互联网上找到的命令,除非您确定它不会造成麻烦。

答案 2 :(得分:0)

我认为这些错误消息也可能来自您错过或错过了.vimrc中的“set nocompatible”这一事实。这将导致你的Vim误解了用于在其脚本文件中继续长行的反斜杠。最好在.vimrc文件的最开头加上“set nocompatible”。

如果您在错误消息中看到“ if!did_filetype()...”并将其与/usr/share/vim/vim{yourversion}/filetype.vim中的代码进行比较,您可以告诉那里应该是“”和“if”之间的“\”。

see this entry for more details