Jak ponownie załadować plik .vimrc bez ponownego uruchamiania vima?


534

Czy możesz edytować .vimrcplik i załadować go ponownie bez konieczności restartowania Vima?

Odpowiedzi:


661

Jeśli go edytujesz, możesz go ponownie załadować:

:so %

%oznacza bieżącą nazwę pliku (patrz :h current-file) i :sojest skrótem od :source, który odczytuje zawartość określonego pliku i traktuje go jak kod Vima.

Ogólnie, aby ponownie załadować aktualnie aktywny plik .vimrc, użyj następujących poleceń (patrz Daily Vim ):

:so $MYVIMRC


36
i :so ~/.vimrcpowinien też działać na Uniksie
Yab

3
: więc ~ / _vimrc działa w systemie Windows. Oczywiście trzymam mój _vimrc w katalogu domowym systemu Windows, w przeciwnym razie to nie zadziała. Aby zobaczyć, co Vim uważa za katalog domowy, użyj :echo expand("~").
Daniel Miladinov

3
Zauważ, że jeśli mapowania klawiatury były już na miejscu, nie zostaną usunięte, nawet jeśli zostaną usunięte z nowego vimrc
Phani

Lub :so ~/.vim/gvimrcgdziekolwiek to umieścisz
NeilG

79

Co więcej, konfigurujesz Vima, aby obserwował zmiany w twoim .vimrcsystemie i automatycznie ładował konfigurację.

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

Źródło: ta odpowiedź na SO

Uwaga: ta konkretna metoda sprawdza wiele odmian nazw plików konfiguracji Vima, dzięki czemu jest kompatybilna z GUI Vim, Windows Vim itp.


2
Jak skuteczna jest ta metoda?
Alexej Magura,

Uważam, że użycie tego rodzaju polecenia czasami zawiesza mój nvim na kilka sekund lub dłużej.
jdhao

11

Kluczowe odwzorowania

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

Całkowicie zautomatyzowane rozwiązanie

Aby automatycznie ponownie załadować po zapisaniu, dodaj następujące elementy do $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

a następnie po raz ostatni wpisz:

:so %

Następnym razem, gdy zapiszesz vimrc, zostanie on automatycznie ponownie załadowany.

Cechy:

  • Informuje użytkownika o tym, co się stało (także loguje się do :messages)
  • Obsługuje różne nazwy plików konfiguracyjnych
  • Zapewnia, że ​​będzie pasował tylko do rzeczywistego pliku konfiguracyjnego (ignoruje kopie w innych katalogach lub plik fugitive://różnicowy)
  • Nie wygeneruje błędu, jeśli używasz vim-tiny

Oczywiście automatyczne przeładowanie nastąpi tylko wtedy, gdy edytujesz swój vimrcvim.


5

Alternatywą dla zapamiętywania / pisania :so $MYVIMRCsą te mapowania. Umożliwia szybką edycję vimrc ( ev) lub source vimrc ( sv).

" Quickly open/reload vim
nnoremap <leader>ev :split $MYVIMRC<CR>  
nnoremap <leader>sv :source $MYVIMRC<CR>     
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.