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?

ivo
fonte

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
Matteo Riva
fonte
2
Dê uma olhada em stackoverflow.com/questions/803464/…
mrucci
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.

Andrei
fonte
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.

Tom Hale
fonte
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>     
maged
fonte