Установка команды VIM в качестве плагина - PullRequest
0 голосов
/ 03 апреля 2011

У меня есть следующая команда, запускаемая как плагин vim в ~ / .vim / plugin / autohighlight.vim

:autocmd CursorMoved * exe printf('match IncSearch /\<%s\>/', expand('<cword>'))

Дело в том, что она генерирует кучу ошибок где угоднокроме случаев, когда я редактирую файл.(Проводник, другие окна)

Есть ли способ указать сценарию вступать в силу только при редактировании файла, а не где-либо еще в VIM?

1 Ответ

0 голосов
/ 03 апреля 2011

Вы можете попробовать это:

autocmd CursorMoved * :if filewritable(@%)==1 |
                      \    call matchadd('IncSearch', '\V\<'.escape(expand('<cword>').'\>', '\'), 10, 1) |
                      \endif

Это сделает подсветку, только если текущее имя буфера является записываемым файлом (не каталогом).Это не удастся, если вы редактируете что-то, что использует BufWriteCmd для выполнения сохранения (например, если вы редактируете файл внутри zip-архива).

Кстати, вы можете указать эти ошибки?Мне удалось получить ошибку, когда я использовал :e ., но это не было связано с тем, что вы наблюдаете каталог, оно появилось только потому, что вы забыли сделать экранирование .Если вы написали escape(expand('<cword>'), '\/') вместо expand('<cword>'), такая ошибка не появится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...