Как мне получить плагин проекта Vim для загрузки in.vim при изменении внешнего буфера? - PullRequest
0 голосов
/ 06 декабря 2010

Я использую плагин проекта в Vim. Для каждого проекта, над которым я работаю, я создал собственный in.vim / out.vim, в котором настраиваются специфичные для проекта вещи.

Например, я установил значение смещения 2 в in.vim, тогда как в моем .vimrc я установил 4 . Когда я открываю файл из дерева проекта, все в порядке: sw - 2. Теперь я компилирую исходники (Visual Studio) и получаю некоторые ошибки / предупреждения компилятора. Переключитесь на Visual Studio, исправьте ошибки, затем вернитесь к Vim.

Мой редактор действительно понял, что я изменил файл за пределами редактора, и просит меня перезагрузить файл. После подтверждения перезагрузки sw устанавливается на 4 .

Очевидно, это потому, что .vimrc получает чтение при перезагрузке буфера и перезаписывает мои настройки shiftset, хранящиеся в файле конфигурации in.vim.

У меня вопрос: есть ли способ заставить плагин проекта (или сам vim) загрузить in.vim при обновлении буфера?

Решение

Ответ ZyX указал мне на обработку, которая работает для меня:

  1. В in.vim задайте глобальную переменную для пути in.vim:

    let g:invimpath = "D:/project/vimstuff/in.vim"

  2. В .vimrc попробуйте загрузить указанный файл, когда FileChangedShellPost происходит:

    autocmd FileChangedShellPost * if exists("g:invimpath") | exe 'source ' . g:invimpath | endif

Кредиты отправляются в ZyX, чтобы указать мне этот путь.

1 Ответ

2 голосов
/ 06 декабря 2010

Да, с автокомандой FileChangedShellPost, но я предлагаю вам сначала добавить следующее непосредственно перед началом вашего vimrc (но после оператора scriptencoding, если он присутствует):

if exists("s:vimrc_loaded")
    finish
endif
let s:vimrc_loaded=1
...