Как перезагрузить файл .vimrc без перезапуска vim?

211618
ivo

Можете ли вы отредактировать .vimrcфайл и перезагрузить его, не перезапуская Vim?

507

4 ответа на вопрос

623
Matteo Riva

Если вы редактируете его, вы можете перезагрузить его:

:so % 

%обозначает текущее имя файла (см. :h current-file) и :soявляется сокращением :source, которое считывает содержимое указанного файла и обрабатывает его как код Vim.

В общем, чтобы перезагрузить текущий активный .vimrc, используйте следующее (см. Daily Vim ):

:so $MYVIMRC 
Посмотрите на http://stackoverflow.com/questions/803464/how-do-i-source-something-in-my-vimrc-file mrucci 14 лет назад 2
и `: так ~ / .vimrc` тоже должен работать на Unix Yab 13 лет назад 31
: так ~ / _vimrc работает на окнах. Конечно, я храню свой _vimrc в своем домашнем каталоге Windows, иначе это не сработает. Чтобы увидеть, что Vim считает вашим домашним каталогом, используйте `: echo expand (" ~ ")`. Daniel Miladinov 11 лет назад 3
Обратите внимание, что если сопоставления клавиатуры уже были на месте, они не будут удалены, даже если они будут удалены из нового vimrc Phani 9 лет назад 3
76
Andrei

Более того, вы настраиваете Vim для отслеживания изменений в вашем компьютере .vimrcи автоматически перезагружаете конфигурацию.

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

Источник: этот ответ на SO

Примечание: этот конкретный метод отслеживает множество вариаций имен файлов конфигурации Vim, так что он совместим с GUI Vim, Windows Vim и т. Д.

Насколько эффективен этот метод? Alexej Magura 6 лет назад 2
Я обнаружил, что использование такого рода команд иногда приводит к зависанию моего nvim на несколько секунд или дольше. jdhao 5 лет назад 0
9
Tom Hale

Сопоставления клавиш

" 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

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

5
maged

An alternative to remembering/typing :so $MYVIMRC is these mappings. It lets you quickly edit vimrc (ev) or source vimrc (sv).

" Quickly open/reload vim nnoremap <leader>ev :split $MYVIMRC<CR> nnoremap <leader>sv :source $MYVIMRC<CR>