Reload .vimrc in Vim without restart
It bothers me when I wrote something into .vimrc
and I have to close it first and open to get my changes be applied.
Is there a way of reload .vimrc
in Vim without closing it?
E.g. I've added set nu
to ~/.vimrc
and I want line numbers to appear for all my windows and buffers.
Solution 1:
:source ~/.vimrc
Run that from inside vim, that will apply your .vimrc
Alternately
:source $MYVIMRC
Solution 2:
Here's one for posterity. Add the following to your .vimrc:
map <leader>vimrc :tabe ~/.vim/.vimrc<cr>
autocmd bufwritepost .vimrc source $MYVIMRC
The first line means you can open your vimrc from any vim buffer by typing your leader, then writing "vimrc." For example, my leader is set to comma, so if I'm in edit mode and I type ",vimrc" it opens my vimrc in a new tab.
The second line automatically sources the changes to your vimrc when you save and close it. It's magic.
Solution 3:
:so %
if currently editing .vimrc
Solution 4:
" Quickly edit/reload this configuration file
nnoremap gev :e $MYVIMRC<CR>
nnoremap gsv :so $MYVIMRC<CR>
To automatically reload upon save, add the following to your $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
and then for the last time, type:
:so %
The next time you save your vimrc
, it will be automatically reloaded.
Features:
- Tells the user what has happened (also logging to
:messages
) - Handles various names for the configuration files
- Ensures that it wil only match the actual configuration file (ignores copies in other directories, or a
fugitive://
diff) - Won't generate an error if using
vim-tiny
Of course, the automatic reload will only happen if you edit your vimrc
in vim.