Làm mới tất cả các tệp trong bộ đệm từ đĩa trong vim


123

Lệnh để làm mới một tập tin từ phiên bản trên đĩa là :e!

Làm thế nào tôi có thể làm tương tự cho tất cả các tệp trong bộ đệm?

Bối cảnh: Tôi cần điều đó bởi vì tôi đang sử dụng git với nhiều nhánh với một vim mở có chứa bộ đệm. Khi tôi kiểm tra một chi nhánh, tôi muốn có vim refresh.

Câu trả lời:


87

Đọc tài liệu cho bufdo, nó nên làm những gì bạn muốn.


33
ok tuyệt vời vậy ,: bufdo e! sẽ làm điều đó. Nhưng có một tải nhanh chóng (Y / N) mỗi lần. Làm sao để tôi thoát khỏi nó?
odwl

21
Sử dụng set noconfirmtrước khi sử dụng bufdolệnh ( set confirmsau đó để reanable).
pmf

22
bufdo etò mò để lại tất cả các bộ đệm không được tô sáng
Steven Lu

4
@StevenLu Kiểm tra câu trả lời của PaulFenney bên dưới.
DBedrenko

12
Tại sao mọi người bỏ phiếu này? Đó không chỉ không phải là một câu trả lời, mà là hướng nó dẫn bạn có nghĩa là việc tô sáng cú pháp của bạn bị vô hiệu hóa sau khi tải lại.
Dmitry Minkovsky

120

Các :checkt[ime]lệnh được thiết kế cho mục đích này rất.

Nó sẽ nhắc bạn tải lại bất kỳ bộ đệm nào đã thay đổi; nếu bạn muốn bỏ qua lời nhắc, bạn có thể thực hiện :set autoreadtrước (bạn vẫn sẽ nhận được lời nhắc về bộ đệm với các thay đổi chưa được lưu cục bộ).

Nó cũng tránh vấn đề làm nổi bật cú pháp được đề cập bởi Steven Lu về câu trả lời được chấp nhận; :bufdotắt đánh dấu cú pháp theo thiết kế .

Tìm thấy qua: http://vim.1045645.n5.nabble.com/Bug-report-bufdo-e-breaking-syntax-highlighting-on-displayed-buffers-tp1209995p1209998.html


19

Đây là những gì tôi đã đưa vào .vimrc của tôi:

fun! PullAndRefresh()
  set noconfirm
  !git pull
  bufdo e!
  set confirm
endfun

nmap <leader>gr call PullAndRefresh()

7

Từ :help autoread:

Khi một tệp đã được phát hiện đã bị thay đổi bên ngoài Vim và nó không bị thay đổi bên trong Vim, hãy tự động đọc lại. Khi tập tin đã bị xóa, điều này không được thực hiện.

Nếu, giống như tôi, bạn chỉ muốn luôn luôn tải lại bộ đệm cũ nhưng chưa được sửa đổi, thì điều này có vẻ như nó sẽ hoàn thành công việc.

Tuy nhiên, chi tiết cuối cùng là khi vim thông báo bộ đệm cũ. Điều đó có thể bị ép buộc với checktime. Nếu bạn có các sự kiện tập trung được thiết lập , thì chúng ta có thể chạy checktimebất cứ khi nào chúng ta đạt được tiêu điểm như vậy:

set autoread
autocmd FocusGained * checktime

Câu trả lời này cũng có một số chi tiết thú vị.


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.