Como você recarrega o seu arquivo .vimrc sem reiniciar o vim?


533

Você pode editar seu .vimrcarquivo e recarregá-lo sem precisar reiniciar o Vim?

Respostas:


660

Se você estiver editando, você pode recarregá-lo com:

:so %

%significa o nome do arquivo atual (consulte :h current-file) e :soé a abreviação de :source, que lê o conteúdo do arquivo especificado e o trata como código Vim.

Em geral, para recarregar o .vimrc atualmente ativo, use o seguinte (consulte Daily Vim ):

:so $MYVIMRC


36
e :so ~/.vimrcdeve funcionar também no UNIX
Yab

3
: so ~ / _vimrc funciona no Windows. Obviamente, mantenho meu _vimrc no diretório inicial do Windows, ou isso não funcionará. Para ver o que o Vim considera seu diretório inicial, use :echo expand("~").
Daniel Miladinov

3
Note que se mapeamentos de teclado já estavam no lugar, então eles não vão apagados mesmo se eles são excluídos da nova vimrc
Phani

Ou :so ~/.vim/gvimrcou onde quer que você
diga

79

Melhor ainda, você configura o Vim para observar mudanças no seu .vimrce recarrega automaticamente a configuração.

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

Fonte: esta resposta no SO

Nota: esse método específico observa as muitas variações dos nomes de arquivos de configuração do Vim, para que seja compatível com a GUI Vim, Windows Vim etc.


2
Qual é o desempenho desse método?
Alexej Magura

Acho que usar esse tipo de comando algumas vezes trava meu nvim por alguns segundos ou mais.
Jdhao

11

Mapeamentos principais

" Quickly edit/reload this configuration file
nnoremap gev :e $MYVIMRC<CR>
nnoremap gsv :so $MYVIMRC<CR>

Solução completamente automatizada

Para recarregar automaticamente ao salvar, adicione o seguinte ao seu $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

e, pela última vez, digite:

:so %

A próxima vez que você salvar o seu vimrc, ele será recarregado automaticamente.

Recursos:

  • Informa ao usuário o que aconteceu (também fazendo login :messages)
  • Manipula vários nomes para os arquivos de configuração
  • Garante que ele corresponda apenas ao arquivo de configuração real (ignora cópias em outros diretórios ou um fugitive://diff)
  • Não gerará um erro se estiver usando vim-tiny

Obviamente, a recarga automática só acontecerá se você editar seu vimrcin vim.


5

Uma alternativa para lembrar / digitar :so $MYVIMRCsão esses mapeamentos. Permite editar rapidamente o vimrc ( ev) ou o vimrc de origem ( sv).

" Quickly open/reload vim
nnoremap <leader>ev :split $MYVIMRC<CR>  
nnoremap <leader>sv :source $MYVIMRC<CR>     
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.