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?

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


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.


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.


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>     
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.