it-swarm-ru.tech

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

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

517
ivo

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

:so %

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

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

:so $MYVIMRC
638
Matteo Riva

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

77
Andrei

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

" 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://)
  • Не генерирует ошибку при использовании vim-tiny

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

9
Tom Hale

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

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