Tôi đã tạo một plugin có tên "noswapsuck" chỉ cho phép hoán đổi khi bộ đệm chứa các thay đổi chưa được lưu. Khi các thay đổi đã được lưu, tệp hoán đổi sẽ bị xóa. Do đó, các tệp hoán đổi chứa cùng nội dung với tệp trên đĩa sẽ bị xóa.
Lấy nó ở đây: noswapsuck.vim
Nó đã hoạt động tốt cho tôi, nhưng tôi chưa bao giờ công khai nó trước đây, vì vậy tôi rất hoan nghênh phản hồi.
Ưu điểm:
- Các tệp hoán đổi duy nhất còn lại trên đĩa của bạn sẽ là các tệp hoán đổi quan trọng thực sự khác với tệp!
Nhược điểm:
Nếu bộ đệm có tệp hoán đổi, nó sẽ không được phát hiện khi tệp được mở lần đầu tiên. Nó sẽ chỉ được phát hiện khi swapfile
được bật, đó là khi bạn bắt đầu chỉnh sửa bộ đệm. Đó là muộn khó chịu, và sẽ làm gián đoạn bạn. (Đã giải quyết: Bây giờ chúng tôi kiểm tra tệp hoán đổi có sẵn khi bộ đệm được mở, bằng cách tạm thời bật lại swapfile
tùy chọn.)
Nếu bạn đang làm việc trong một môi trường mà bạn muốn giảm thiểu việc ghi đĩa (ví dụ như năng lượng thấp hoặc các tệp được gắn trên mạng hoặc chỉnh sửa một tệp lớn) thì không nên lý tưởng để tiếp tục xóa và tạo lại tệp hoán đổi trên mỗi lưu và chỉnh sửa. Trong những tình huống như vậy, bạn có thể làm:
:let g:NoSwapSuck_CloseSwapfileOnWrite = 0
sẽ giữ lại tệp hoán đổi sau khi ghi, nhưng vẫn sẽ xóa nó khi bộ đệm mất tiêu điểm.
Nhân tiện, tôi có một plugin nhỏ khác :DiffAgainstFileOnDisk
có thể khá hữu ích sau khi nhấn (r)ecover
, để kiểm tra xem bộ đệm bạn đã khôi phục có mới hơn hoặc cũ hơn tệp hiện có hoặc giống hệt với nó không.