2014-11-04 7 views
0

Когда я пытаюсь открыть файл для редактирования с помощью 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 
+0

Что находится в вашем vimrc? В частности, что такое строка 18, а может быть, предыдущая строка или около того? –

+0

@JonKiparsky Я добавил содержимое файла конфигурации vimrc.На 18-й строке - 'if line (" '"")> 0 && line ("'" ") <= line (" $ ") |' –

ответ

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" или that one или старую ссылку на пост, что приводит к 404 или более простая версия, которая находится в $VIMRUNTIME/vimrc_example.vim).

  • Никогда не запускайте команду, которую вы найдете в Интернете, если вы не уверены, что это не вызовет неприятностей.

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. :)

+0

Это решило мою проблему. Я думаю, что эти строки добавились, когда я установил какой-то плагин vim, не совсем уверен, когда и для чего. –

+0

Рад, что я мог бы помочь. Для чего это стоит, похоже, он пытается вспомнить, где вы находились в файле между сеансами, - но, как я уже сказал, это не моя область, поэтому я не уверен, что это не так. –

0

Я думаю, что эти сообщения об ошибках могут также исходить от того, что вы пропустили или промах-помещен «набор несовместимости» в вашем .vimrc. Это заставит ваш Vim неправильно понимать обратную косую черту, используемую для продолжения длинных строк в файлах сценариев. Лучше поставить «установить nocompatible» в самом начале вашего .vimrc-файла.

Если вы видите «if! Did_filetype() ...» в сообщении об ошибке и сравнили его с кодом в /usr/share/vim/vim{yourversion}/filetype.vim, вы можете сказать, что быть «\» между «» и «if».

see this entry for more details

Смежные вопросы