2010-04-17 14:18:40 +0000 2010-04-17 14:18:40 +0000
545
545

Jak przeładować plik .vimrc bez restartu vima?

Czy możesz edytować swój plik .vimrc i przeładować go bez konieczności restartu Vima?

Odpowiedzi (4)

681
681
681
2010-04-17 14:24:51 +0000

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

:so %

% oznacza aktualną nazwę pliku (patrz :h current-file), a :so jest skrótem od :source, który odczytuje zawartość podanego pliku i traktuje go jako kod Vima.

Ogólnie rzecz biorąc, aby ponownie załadować aktualnie aktywny .vimrc, użyj następującej opcji (patrz Daily Vim ):

:so $MYVIMRC
79
79
79
2012-04-28 09:32:28 +0000

Jeszcze lepiej, konfigurujesz Vima do śledzenia zmian w .vimrc i automatycznie przeł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 obserwuje wiele wariantów nazw plików konfiguracyjnych Vima tak, aby była kompatybilna z GUI Vima, Windows Vima, itp.

11
11
11
2016-09-02 14:12:06 +0000

Key mappings

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

Completely automated solution

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:

  • Informuje użytkownika o tym, co się stało (również logując się do :messages)
  • Obsługuje różne nazwy plików konfiguracyjnych
  • Zapewnia, że będzie on odpowiadał tylko aktualnemu plikowi konfiguracyjnemu (ignoruje kopie w innych katalogach, lub diff fugitive://)
  • Nie wygeneruje błędu, jeśli użyjesz vim-tiny

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

5
5
5
2015-06-17 10:36:59 +0000

Alternatywą dla zapamiętywania/opisywania :so $MYVIMRC są te mappingi. Pozwala to szybko edytować vimrc (ev) lub źródłowy vimrc (sv).

" Quickly open/reload vim
nnoremap <leader>ev :split $MYVIMRC<CR>  
nnoremap <leader>sv :source $MYVIMRC<CR>