2010-03-08 4 views

ответ

54

Да, просто используйте команду :so % при редактировании .vimrc.

Если вы хотите ВИМ для автоматической перезагрузки конфигурации, необходимо добавить следующие команды:

augroup myvimrchooks 
    au! 
    autocmd bufwritepost .vimrc source ~/.vimrc 
augroup END 

группировка автокомандой здесь, чтобы избежать «экспоненциальный» перезагрузки, если вы сохраните несколько раз конфигурацию.

+0

Обратите внимание, что это не работает с 'gvimrc', или если ваш файл называется' _vimrc' или 'vimrc', или если вы редактируете файл под названием .vimrc' в другом каталог. См. Мой ответ для решения этих проблем. –

20

источник ваш vimrc файл :source ~/.vimrc

+1

on windows, just: so ~/_vimrc –

38

Вот более кросс-платформенной совместимости версии при запуске на Mac/Windows/Linux и gvimrc:

augroup myvimrc 
    au! 
    au BufWritePost .vimrc,_vimrc,vimrc,.gvimrc,_gvimrc,gvimrc so $MYVIMRC | if has('gui_running') | so $MYGVIMRC | endif 
augroup END 

autocmd часы все потенциальные *vimrc файлы и когда один изменяет, он перезагружает файл vimrc с последующим gvimrc, если GUI запущен.

+0

Я не получил вашу команду. Где определяется $ MYGVIMRC? –

+5

Он устанавливается при запуске GUI Vim.см. ': help gvimrc' – matpie

+3

FANTASTIC, спасибо. Если вы сделаете это, избегайте перфорации мозга, который я только что совершил ... Я открыл gvim, добавил это к моему vimrc, а затем попытался подтвердить, что это сработало. Нет ... Через 20 минут я понимаю, что Я ЗАБЫЛ ИСТОЧНИК ФАЙЛА, ПОСЛЕ ТОГО, ЧТО АВТОКМД ДОБАВЛЕН. Как только я это сделал, конечно, все сработало. Я думаю, это было слишком мета для меня, и у меня было умственное переполнение стека. –

1

autocmd! bufwritepost _vimrc источник%

это будет автоматической перезагрузки все конфигурации в _vimrc файла при сохранении

3
" Quickly edit/reload this configuration file 
nnoremap gev :e $MYVIMRC<CR> 
nnoremap gsv :so $MYVIMRC<CR> 

Чтобы автоматически перезарядку на себя, добавьте следующие строки в $MYVIMRC:

if has ('autocmd') " Remain compatible with earlier versions 
augroup vimrc  " Source vim configuration upon save 
    autocmd! BufWritePost $MYVIMRC source % | echom "Reloaded " . $MYVIMRC | redraw 
    autocmd! BufWritePost $MYGVIMRC if has('gui_running') | so % | echom "Reloaded " . $MYGVIMRC | endif | redraw 
    augroup END 
endif " has autocmd 

, а затем в последний раз, тип:

:so % 

В следующий раз, когда вы сохраните свой vimrc, он будет автоматически перезагружен.

Особенности:

  • сообщает пользователю, что произошло (также протоколирование в :messages)
  • Ручки различные названия для файлов конфигурации
  • гарантирует, что Виль соответствует только фактический файл конфигурации (игнорирует копии в других каталогах или fugitive:// diff)
  • Не будет генерировать ошибку, если используется vim-tiny

Конечно, автоматическая перезагрузка произойдет, только если вы отредактируете свой vimrc в vim.

+0

Это похоже на работу, когда все файлы открыты в том же экземпляре 'vim', в котором я редактирую' $ MYVIMRC'. Например, если они находятся в другом терминале, мне все равно придется вручную вводить '$ MYVIMRC'. Есть ли способ обойти это? –

+1

Не то, что я знаю - это работает, ловясь, когда текущий 'vim' выписывает файл. Возможно, будет возможно контролировать mtime на самом файле, но не знаете, как это сделать без асинхронного опроса. –

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