Можно ли применить конфигурации vim без перезапуска?


Я хочу изменить .vimrc файл из Vim и применить их без перезагрузки Vim.

5 56
vim

5 ответов:

да, просто использовать :so % команда при редактировании вашего .vimrc.

Если вы хотите, чтобы vim автоматически перезагрузил вашу конфигурацию, вы должны добавить следующие команды:

augroup myvimrchooks
    au!
    autocmd bufwritepost .vimrc source ~/.vimrc
augroup END

группировка autocommand здесь, чтобы избежать "экспоненциальной" перезагрузки, если вы сохраните несколько раз свою конфигурацию.

вот более кросс-платформенная совместимая версия, если вы работаете на Mac / Windows / Linux и gvimrc:

augroup myvimrc
    au!
    au BufWritePost .vimrc,_vimrc,vimrc,.gvimrc,_gvimrc,gvimrc so $MYVIMRC | if has('gui_running') | so $MYGVIMRC | endif
augroup END

autocmd наблюдает за всем потенциалом *vimrc файлы и когда один изменяет, он перезагружает vimrc файл, за которым следует gvimrc если графический интерфейс запущен.

источник вашего файла vimrc :source ~/.vimrc

" 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.

autocmd! bufwritepost _vimrc source %

это автоматически перезагрузит всю конфигурацию в файле _vimrc при сохранении