Lưu ý: bạn chưa nói hệ điều hành nào bạn đang sử dụng. Phần sau hoạt động với shell Unix nhưng nếu chạy Windows, bạn có thể tải xuống Cygwin xương trần hoặc một số shell khác.
Tôi đã từng làm giống như bạn, chạy :e
để mở lại cùng một tệp để có tùy chọn xóa tệp khôi phục. Sau khi gặp sự cố hoặc khởi động lại máy tính không mong muốn, tôi dọn sạch tất cả các tệp khôi phục Vim còn sót lại bằng cách chạy vim -r
trên các tệp hoán đổi và để quá trình khôi phục được tiến hành.
Khi tập tin không thay đổi
Nếu các tệp không thay đổi, tôi muốn xóa tệp khôi phục ngay lập tức. Sẽ thật tuyệt nếu Vim có thể làm điều này tự động nhưng thật không may, nó không.
Khi tập tin đã thay đổi
Nếu các tệp đã thay đổi, tôi chạy DiffOrig
lệnh để so sánh sự khác biệt giữa phiên bản gốc và phiên bản được phục hồi. Nếu tôi hài lòng với các thay đổi từ tệp khôi phục, tôi sẽ thoát bằng cách lưu các tệp bằng :x
lệnh. Nếu không, tôi loại bỏ các thay đổi đã phục hồi bằng cách bỏ với :q!
. Nếu tệp khôi phục không được liên kết với tệp đã lưu, ví dụ: .swp
tôi thường sử dụng :w filename
để lưu bộ đệm đã khôi phục vào một tệp có tên tệp.
Người trợ giúp của DiffOrig
Tôi đã thêm lệnh DiffOrig vào lệnh của mình .vimrc
để nó luôn khả dụng.
command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
Kịch bản Shell
Tôi chạy đoạn script sau trong shell của mình để tìm mọi tệp hoán đổi trong cây thư mục hiện tại. Mỗi tệp hoán đổi sau đó được sử dụng để mở Vim trong chế độ phục hồi của chế độ Hồi giáo và sau đó bị xóa sau khi đóng Vim.
find . -type f -name '.*.sw?' -exec vim -r "{}" -c DiffOrig \; -exec rm -iv "{}" \;
Các rm -i
tùy chọn yêu cầu xác nhận ( y
) để xóa các tập tin. Nếu bạn tự tin hơn và muốn tăng tốc quá trình, điều này có thể được bỏ qua.
:e #
mẹo của bạn là, mặc dù không lý tưởng, nhưng vẫn hữu ích hơn câu trả lời hiện tại dưới đây. :-)