Jak mogę ponownie załadować mój vimrc bez opuszczania Vima?

50

Kiedy dokonuję zmiany w moim .vimrc, zwykle wychodzę z Vima i otwieram go ponownie. Czy jest łatwiejszy sposób na ponowne załadowanie nowych .vimrczmian?

Thameera
źródło

Odpowiedzi:

47

Biegać:

:source $MYVIMRC

wewnątrz Vima, aby ponownie załadować vimrcplik. Lub krótsza wersja:

:so $MYVIMRC

jak wspomniano w komentarzu kenorb .

Przydatne może być również mapowanie jednej z tych formularzy na klucz. Na przykład:

nnoremap <Leader>r :source $MYVIMRC<CR>
Paul Gessler
źródło
2
Skrót: :so $MYVIMRC.
kenorb
@kenorb: Dodałem tę możliwość; dzięki za wzmiankę o tym!
Paul Gessler
:so $m<Tab> ← dodatkowy skrót
Aaron Thoma
3
Zaoszczędź dwa kolejne naciśnięcia klawiszy :so %. %jest ustawiony na bieżącą nazwę pliku edytowanego bufora, w tym przypadku$MYVIMRC
cbaumhardt
1
Zdecydowanie najprostszym sposobem na to jest automatyczne przeładowanie vimrc po zapisaniu - sprawdź pozostałe odpowiedzi.
Tom Hale,
20

Jeśli chcesz od czasu do czasu ponownie załadować plik

:source $MYVIMRC

jak napisał Paweł, ma rację. Jeśli często zmieniasz vimrc, możesz dodać coś takiego do swojego pliku vimrc:

autocmd BufWritePost .vimrc,_vimrc source $MYVIMRC

Spowoduje to ponowne załadowanie pliku podczas pisania (z poziomu tej sesji vim)

Johnnes
źródło
1
johannes: Czy musimy edytować plik .vimrc poprzez vim, aby to polecenie automatycznie pobierało plik?
Sai Manoj Kumar Yadlapati
5
Uwaga: plik vimrc można również nazwać innymi rzeczami: na przykład vimrc (jeśli jest w ~ / .vim).
user50136
1
@SaiManojKumarYadlapati Tak, AS powiedział, że to musi być ta sama sesja vom. Bufwritepost jest uruchamiany, gdy vom wykonuje zapis
johannes
Problemy z tym: (1) nie działa .vim/vimrc, (2) utworzy duplikaty, autocmdwięc każde kolejne zapisywanie będzie wolniejsze, ponieważ plik zostanie ponownie załadowany wiele razy, (3) nie zachowuje się z vim-tiny, który nie działa mają autocmd i nadal jest domyślny w niektórych dystrybucjach Linuksa. Zobacz moją odpowiedź, aby rozwiązać te problemy.
Tom Hale,
2
" Quickly edit/reload this configuration file
nnoremap gev :e $MYVIMRC<CR>
nnoremap gsv :so $MYVIMRC<CR>

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.

Tom Hale
źródło