Làm thế nào để bạn tải lại tập tin .vimrc của bạn mà không khởi động lại vim?


534

Bạn có thể chỉnh sửa .vimrctập tin của mình và tải lại mà không cần phải khởi động lại Vim không?

Câu trả lời:


661

Nếu bạn đang chỉnh sửa nó, bạn có thể tải lại bằng:

:so %

%là viết tắt của tên tệp hiện tại (xem :h current-file) và :soviết tắt là :source, nó đọc nội dung của tệp được chỉ định và coi nó là mã Vim.

Nói chung, để tải lại .vimrc hiện đang hoạt động, hãy sử dụng như sau (xem Daily Vim ):

:so $MYVIMRC

2
Có một cái nhìn về stackoverflow.com/questions/804464/ trên
mrucci

36
:so ~/.vimrccũng nên hoạt động trên unix
Yab

3
: vì vậy ~ / _vimrc hoạt động trên windows. Tất nhiên, tôi giữ _vimrc của mình trong thư mục home windows, nếu không thì nó sẽ không hoạt động. Để xem những gì Vim xem xét thư mục nhà của bạn, hãy sử dụng :echo expand("~").
Daniel Miladinov

3
Lưu ý rằng nếu ánh xạ bàn phím đã được đặt, thì chúng sẽ không bị xóa ngay cả khi chúng bị xóa khỏi vimrc mới
Phani

Hoặc :so ~/.vim/gvimrchoặc bất cứ nơi nào bạn đặt nó tất nhiên
NeilG

79

Thậm chí tốt hơn, bạn định cấu hình Vim để theo dõi các thay đổi trong .vimrcvà tự động tải lại cấu hình.

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

Nguồn: câu trả lời này trên SO

Lưu ý: phương pháp đặc biệt này theo dõi nhiều biến thể của tên tệp Vim config để nó tương thích với GUI Vim, Windows Vim, v.v.


2
Làm thế nào hiệu quả là phương pháp này?
Alexej Magura

Tôi thấy rằng sử dụng loại lệnh này đôi khi treo nvim của tôi trong vài giây hoặc lâu hơn.
jdhao

11

Ánh xạ chính

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

Giải pháp hoàn toàn tự động

Để tự động tải lại khi lưu, hãy thêm các mục sau vào $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

và lần cuối cùng, gõ:

:so %

Lần sau khi bạn lưu vimrc, nó sẽ được tự động tải lại.

Đặc trưng:

  • Cho người dùng biết những gì đã xảy ra (cũng đăng nhập vào :messages)
  • Xử lý các tên khác nhau cho các tệp cấu hình
  • Đảm bảo rằng nó sẽ chỉ khớp với tệp cấu hình thực tế (bỏ qua các bản sao trong các thư mục khác hoặc fugitive://khác)
  • Sẽ không phát sinh lỗi nếu sử dụng vim-tiny

Tất nhiên, tải lại tự động sẽ chỉ xảy ra nếu bạn chỉnh sửa vimrctrong vim của bạn .


5

Một cách khác để ghi nhớ / gõ :so $MYVIMRClà những ánh xạ này. Nó cho phép bạn nhanh chóng chỉnh sửa vimrc ( ev) hoặc nguồn vimrc ( sv).

" Quickly open/reload vim
nnoremap <leader>ev :split $MYVIMRC<CR>  
nnoremap <leader>sv :source $MYVIMRC<CR>     
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.