Muat ulang .vimrc di Vim tanpa restart

93

Itu mengganggu saya ketika saya menulis sesuatu .vimrcdan saya harus menutupnya terlebih dahulu dan membuka untuk menerapkan perubahan saya. Apakah ada cara memuat ulang .vimrcdi Vim tanpa menutupnya?

Misalnya saya telah menambahkan set nuuntuk ~/.vimrcdan saya ingin nomor baris muncul untuk semua jendela saya dan buffer.

Nemoden
sumber

Jawaban:

129

:source ~/.vimrc

Jalankan itu dari dalam vim, itu akan berlaku .vimrc

Bergantian

:source $MYVIMRC

pemikir bebas
sumber
18

Ini satu untuk anak cucu. Tambahkan yang berikut ini ke .vimrc Anda:

map <leader>vimrc :tabe ~/.vim/.vimrc<cr>
autocmd bufwritepost .vimrc source $MYVIMRC

Baris pertama berarti Anda dapat membuka vimrc Anda dari buffer vim apa pun dengan mengetikkan pemimpin Anda, lalu menulis "vimrc." Misalnya, pemimpin saya diatur ke koma, jadi jika saya dalam mode edit dan saya ketik ", vimrc" itu akan membuka vimrc saya di tab baru.

Baris kedua secara otomatis sumber perubahan ke vimrc Anda ketika Anda menyimpan dan menutupnya. Itu ajaib.

Dekan
sumber
1
Idealnya map <leader>vimrc :tabe $MYVIMRC<cr>, tidakkah Anda cocok dengan autocmd?
Nick Bisby
@NickBisby Bagi saya ~/.vimrchanyalah sebuah rintisan yang sumber ~/.vim/.vimrcsehingga saya bisa menjaga semuanya di bawah kendali sumber. Bagi sebagian besar orang, Anda benar :tabe $MYVIMRC<cr>.
Dean
1
Atau Anda dapat menggunakan tautan simbolis ke file .vimrc Anda yang sebenarnya alih-alih bukan sebuah rintisan.
Spoike
Bagaimana saya bisa memuat ulang vimrc tanpa mengubah posisi kursor saya?
SergioAraujo
15

:so %

jika sedang mengedit .vimrc

storypixel
sumber
4
" 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