Как перезагрузить файл .vimrc без перезагрузки vim?
Можете ли вы отредактировать файл .vimrc
и перезагрузить его без перезапуска Vim?
4 ответа
Если вы его редактируете, вы можете перезагрузить его с помощью:
:so %
%
обозначает текущее имя файла (см. :h current-file
) и :so
является коротким для :source
, который считывает содержимое указанного файла и обрабатывает его как код Vim.
В общем случае, чтобы повторно загрузить текущий активный .vimrc, используйте следующее (см. Daily Vim ):
:so $MYVIMRC
Еще лучше, вы настраиваете 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, чтобы он совместим с графическим интерфейсом Vim, Windows Vim и т. д.
Отображения клавиш
" 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
) - Обрабатывает различные имена для файлов конфигурации
- Обеспечивает, что он будет соответствовать только фактическому файлу конфигурации (игнорирует копии в других каталогах или diff
fugitive://
) - Не будет генерировать ошибку при использовании
vim-tiny
Конечно, автоматическая перезагрузка произойдет, только если вы измените свой vimrc
в vim.
Альтернатива запоминанию /вводу :so $MYVIMRC
- это сопоставление. Он позволяет быстро редактировать vimrc (ev
) или исходный vimrc (sv
).
" Quickly open/reload vim
nnoremap <leader>ev :split $MYVIMRC<CR>
nnoremap <leader>sv :source $MYVIMRC<CR>