Vim - tự động xóa tệp SWP sau khi khôi phục không thay đổi tệp gốc


9

Khi quá trình Vim bị chấm dứt đột ngột (ví dụ như sự cố hệ thống), nó sẽ để lại tệp SWP. Mở tệp gốc trong Vim sau sẽ cung cấp tùy chọn khôi phục. Hầu hết thời gian tệp được khôi phục giống như tệp đã lưu, vì tôi có thói quen lưu thường xuyên. Rồi Vim nói:

Recovery completed. Buffer contents equals file contents. 
You may want to delete the .swp file now.

Chà, tất nhiên tôi muốn xóa tập tin .swp ngay bây giờ!

Làm cách nào để Vim luôn tự động xóa tệp SWP trong trường hợp này?

Dường như không có cài đặt tích hợp nào để thực hiện việc này, vì vậy tôi đang tìm kiếm một sự kiện tự động thích hợp.

Một cách tôi tìm thấy là :e #sau thông báo, điều này khiến các tùy chọn tồn tại trao đổi xuất hiện lại, sau đó tôi có thể "Xóa nó". Nhưng tôi thực sự không nên làm những bước thêm đó mỗi lần.


Cảm ơn! Tôi thấy :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. :-)
RayLuo

Câu trả lời:


5

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 -rtrê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 DiffOriglệ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 :xlệ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ụ: .swptô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 -itù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.

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.