TL; DR
Bỏ qua Wrap-uptiêu đề cho các vimrcdòng để thêm để làm cho cuộc sống của bạn tốt hơn.
Thủ công
Chạy :checktime
Kiểm tra xem có bộ đệm nào được thay đổi ngoài Vim không. Điều này kiểm tra và cảnh báo bạn nếu bạn kết thúc với hai phiên bản của một tệp.
Tự động
Để tự động tải các thay đổi, hãy thêm vào vimrc:
set 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.
Câu trả lời này thêm một cảnh báo:
Autoread không tải lại tập tin trừ khi bạn làm gì đó như chạy lệnh bên ngoài (như !lshoặc !shv.v.)
Đọc về giải pháp.
Kích hoạt khi con trỏ dừng di chuyển
Thêm vào của bạn vimrc:
au CursorHold,CursorHoldI * checktime
Theo mặc định, CthonHold được kích hoạt sau khi con trỏ vẫn duy trì trong 4 giây và có thể định cấu hình qua thời gian cập nhật .
Kích hoạt thay đổi bộ đệm hoặc tập trung đầu cuối
Thêm phần sau vào của bạn vimrcđể kích hoạt autoreadkhi thay đổi bộ đệm trong khi bên trong vim:
au FocusGained,BufEnter * :checktime
Bắt cửa sổ thiết bị đầu cuối tập trung bên trong vim đồng bằng
Để FocusGained(xem ở trên) hoạt động trong vim đơn giản, bên trong trình giả lập thiết bị đầu cuối (Xterm, tmux, v.v.) cài đặt plugin:
vim-tmux-Focus-event
Trên các phiên bản tmux> 1.9, bạn sẽ cần thêm .tmux.conf:
set -g focus-events on
Gói (lại
Thông báo khi autoreadkích hoạt cũng có thể .
Dưới đây là vimrcdòng của tôi để thực hiện tất cả các điều trên:
" Triger `autoread` when files changes on disk
" https://unix.stackexchange.com/questions/149209/refresh-changed-content-of-file-opened-in-vim/383044#383044
" https://vi.stackexchange.com/questions/13692/prevent-focusgained-autocmd-running-in-command-line-editing-mode
autocmd FocusGained,BufEnter,CursorHold,CursorHoldI * if mode() != 'c' | checktime | endif
" Notification after file change
" https://vi.stackexchange.com/questions/13091/autocmd-event-for-autoread
autocmd FileChangedShellPost *
\ echohl WarningMsg | echo "File changed on disk. Buffer reloaded." | echohl None
Cảm ơn ErichBSchulz đã chỉ cho tôi đi đúng hướngau CursorHold .