Bagaimana cara memuat ulang vimrc saya tanpa meninggalkan Vim?

50

Ketika saya melakukan perubahan pada saya .vimrc, saya biasanya keluar dari Vim dan membukanya lagi. Apakah ada cara yang lebih mudah untuk memuat ulang .vimrcperubahan baru ?

thameera
sumber

Jawaban:

47

Lari:

:source $MYVIMRC

di dalam Vim untuk memuat ulang vimrcfile. Atau, versi yang lebih pendek:

:so $MYVIMRC

seperti yang disebutkan dalam komentar oleh kenorb .

Anda juga mungkin merasa berguna untuk memetakan salah satu dari formulir ini ke kunci. Sebagai contoh:

nnoremap <Leader>r :source $MYVIMRC<CR>
Paul Gessler
sumber
2
Shortcut: :so $MYVIMRC.
kenorb
@kenorb: Saya telah menambahkan kemungkinan ini; terima kasih sudah menyebutkannya!
Paul Gessler
:so $m<Tab> ← jalan pintas ekstra
Aaron Thoma
3
Simpan dua penekanan tombol lagi dengan :so %. %diatur ke nama file saat ini dari buffer yang Anda edit, dalam hal ini$MYVIMRC
cbaumhardt
1
Sejauh ini cara termudah untuk melakukan ini adalah secara otomatis memuat kembali vimrc setelah disimpan - periksa jawaban lainnya.
Tom Hale
20

Jika Anda hanya ingin memuat ulang file sesekali

:source $MYVIMRC

seperti yang ditulis Paulus benar. Jika Anda akhirnya sering mengganti vimrc, Anda bisa menambahkan sesuatu seperti ini ke file vimrc Anda:

autocmd BufWritePost .vimrc,_vimrc source $MYVIMRC

Ini akan memuat ulang file ketika Anda menulisnya (dari dalam sesi vim itu)

johannes
sumber
1
johannes: Apakah kita perlu mengedit .vimrc melalui vim agar perintah ini sumber file secara otomatis?
Sai Manoj Kumar Yadlapati
5
perhatikan file vimrc juga bisa disebut hal lain: misalnya vimrc (jika ada di ~ / .vim).
user50136
1
@SaiManojKumarYadlapati Ya, AS mengatakan ini harus menjadi sesi vom yang sama. Bufwritepost dipicu ketika vom melakukan penulisan
johannes
Masalah dengan ini: (1) tidak berfungsi .vim/vimrc, (2) akan membuat duplikat autocmdsehingga setiap penyimpanan berikutnya akan lebih lambat karena file akan dimuat ulang beberapa kali, (3) tidak berperilaku dengan vim-tiny yang tidak memiliki autocmd dan masih default pada beberapa distribusi linux. Lihat jawaban saya untuk mengatasi masalah ini.
Tom Hale
2
" Quickly edit/reload this configuration file
nnoremap gev :e $MYVIMRC<CR>
nnoremap gsv :so $MYVIMRC<CR>

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