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

533

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

Иво
источник

Ответы:

660

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

:so %

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

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

:so $MYVIMRC
Маттео Рива
источник
2
Посмотрите на stackoverflow.com/questions/803464/...
mrucci
36
и :so ~/.vimrcдолжно работать тоже на Unix
Yab
3
: так ~ / _vimrc работает на окнах. Конечно, я храню свой _vimrc в своем домашнем каталоге Windows, иначе это не сработает. Чтобы увидеть, что Vim считает вашим домашним каталогом, используйте :echo expand("~").
Даниил Миладинов
3
Обратите внимание, что если сопоставления клавиатуры уже были на месте, они не будут удалены, даже если они будут удалены из нового vimrc
Phani
Или, :so ~/.vim/gvimrcили где бы вы ни
говорили,
79

Более того, вы настраиваете 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 и т. Д.

Андрей
источник
2
Насколько эффективен этот метод?
Алексей Магура
Я обнаружил, что использование такого рода команд иногда приводит к зависанию моего nvim на несколько секунд или дольше.
января
11

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

" 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

Альтернативой запоминанию / печатанию :so $MYVIMRCявляются эти сопоставления. Это позволяет вам быстро редактировать vimrc ( ev) или исходный vimrc ( sv).

" Quickly open/reload vim
nnoremap <leader>ev :split $MYVIMRC<CR>  
nnoremap <leader>sv :source $MYVIMRC<CR>     
Магид
источник