Можете ли вы отредактировать файл .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, так что он совместим с GUI 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
) - Обрабатывает различные имена для файлов конфигурации
- Гарантирует, что он будет соответствовать только фактическому файлу конфигурации (игнорирует копии в других каталогах или
fugitive://
diff) - Не будет выдавать ошибку при использовании
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>