Bagaimana Anda memuat ulang file .vimrc Anda tanpa memulai ulang vim?

533

Bisakah Anda mengedit .vimrcfile Anda dan memuat ulang tanpa harus me-restart Vim?

ivo
sumber

Jawaban:

660

Jika Anda mengeditnya, Anda dapat memuatnya kembali dengan:

:so %

%singkatan nama file saat ini (lihat :h current-file) dan :somerupakan kependekan dari :source, yang membaca konten dari file yang ditentukan dan memperlakukannya sebagai kode Vim.

Secara umum, untuk memuat ulang .vimrc yang sedang aktif, gunakan yang berikut (lihat Vim Harian ):

:so $MYVIMRC
Matteo Riva
sumber
36
dan :so ~/.vimrcharus bekerja juga pada unix
Yab
3
: so ~ / _vimrc bekerja di windows. Tentu saja, saya menyimpan _vimrc saya di direktori home windows saya, atau ini tidak akan berfungsi. Untuk melihat apa yang dianggap Vim sebagai direktori home Anda, gunakan :echo expand("~").
Daniel Miladinov
3
Perhatikan bahwa jika pemetaan keyboard sudah ada, maka mereka tidak akan dihapus bahkan jika mereka dihapus dari vimrc baru
Phani
Atau :so ~/.vim/gvimrcatau di mana pun Anda meletakkannya, tentu saja
NeilG
79

Lebih baik lagi, Anda mengkonfigurasi Vim untuk melihat perubahan di Anda .vimrcdan secara otomatis memuat ulang konfigurasi.

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

Sumber: jawaban ini di SO

Catatan: metode khusus ini mengawasi banyak variasi nama file konfigurasi Vim sehingga kompatibel dengan GUI Vim, Windows Vim, dll.

Andrei
sumber
2
Bagaimana performant metode ini?
Alexej Magura
Saya menemukan bahwa menggunakan perintah semacam ini kadang-kadang menggantung nvim saya selama beberapa detik atau lebih lama.
jdhao
11

Pemetaan kunci

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

Solusi yang sepenuhnya otomatis

Untuk memuat ulang secara otomatis saat menyimpan, tambahkan yang berikut ke Anda $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

lalu untuk terakhir kalinya, ketik:

:so %

Lain kali Anda menyimpannya vimrc, itu akan dimuat ulang secara otomatis.

Fitur:

  • Memberitahu pengguna apa yang telah terjadi (juga masuk ke :messages)
  • Menangani berbagai nama untuk file konfigurasi
  • Pastikan hanya cocok dengan file konfigurasi aktual (mengabaikan salinan di direktori lain, atau berbeda fugitive://)
  • Tidak akan menghasilkan kesalahan jika menggunakan vim-tiny

Tentu saja, reload otomatis hanya akan terjadi jika Anda mengedit vimrcin vim Anda.

Tom Hale
sumber
5

Alternatif untuk mengingat / mengetik :so $MYVIMRCadalah pemetaan ini. Ini memungkinkan Anda dengan cepat mengedit vimrc ( ev) atau sumber vimrc ( sv).

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