Làm cách nào để tải lại vimrc của tôi mà không rời Vim?


50

Khi tôi thay đổi .vimrc, tôi thường thoát Vim và mở lại. Có cách nào dễ dàng hơn để tải lại những .vimrcthay đổi mới không?

Câu trả lời:


47

Chạy:

:source $MYVIMRC

bên trong Vim để tải lại vimrctập tin. Hoặc, một phiên bản ngắn hơn:

:so $MYVIMRC

như đã đề cập trong một bình luận của kenorb .

Bạn cũng có thể thấy hữu ích khi ánh xạ một trong hai hình thức này vào một khóa. Ví dụ:

nnoremap <Leader>r :source $MYVIMRC<CR>

2
Phím tắt : :so $MYVIMRC.
kenorb

@kenorb: Tôi đã thêm khả năng này; cảm ơn vì đã đề cập đến nó
Paul Gessler

:so $m<Tab> ← cắt ngắn
Aaron Thoma

3
Lưu thêm hai tổ hợp phím với :so %. %được đặt thành tên tệp hiện tại của bộ đệm bạn chỉnh sửa, trong trường hợp này$MYVIMRC
cbaumhardt

1
Cho đến nay, cách dễ nhất để làm điều này là tự động tải lại vimrc khi lưu - kiểm tra các câu trả lời khác.
Tom Hale

20

Nếu bạn chỉ muốn tải lại tập tin một lần

:source $MYVIMRC

như Paul đã viết là chính xác. Nếu bạn thường xuyên thay đổi vimrc của mình, bạn có thể thêm một cái gì đó như thế này vào tệp vimrc của mình:

autocmd BufWritePost .vimrc,_vimrc source $MYVIMRC

Điều này sẽ tải lại tệp khi bạn viết nó (từ trong phiên vim đó)


1
johannes: Chúng ta có cần chỉnh sửa .vimrc thông qua vim cho lệnh này để tự động nguồn tệp không?
Sài Manoj Kumar Yadlapati

5
lưu ý một tệp vimrc cũng có thể được gọi là những thứ khác: ví dụ vimrc (nếu nó ở ~ / .vim).
dùng50136

1
@SaiManojKumarYadlapati Vâng, AS cho biết đây phải là cùng một phiên nôn. Bufwritepost được kích hoạt khi nôn thực hiện việc viết
johannes

Các vấn đề với điều này: (1) không hoạt động với .vim/vimrc, (2) sẽ tạo các bản sao autocmdđể mỗi lần lưu tiếp theo sẽ chậm hơn vì tệp sẽ được tải lại nhiều lần, (3) không hoạt động với vim-tiny mà không có autocmd và vẫn là mặc định trên một số bản phân phối linux. Xem câu trả lời của tôi để giải quyết những vấn đề này.
Tom Hale

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

Để 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 .

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.