Как перезагрузить файл .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>     
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.