Mục đích của các tập tin trao đổi là gì?


73

Khi tôi chỉnh sửa các tệp, Vim có xu hướng tạo các tệp có tên mà tôi thấy khó chịu. Từ đó , tôi thấy rằng tùy chọn ngăn chặn việc tạo các tệp hoán đổi..filename.swpvim -h-n

Có một lệnh vimrc mà tôi có thể sử dụng để vô hiệu hóa các tập tin trao đổi theo mặc định?

Mục đích của các tệp hoán đổi là gì và tôi sẽ bỏ qua chức năng nào bằng cách loại bỏ chúng?


FWIW, tôi thấy các tệp hoán đổi cũng gây phiền nhiễu, và trong một thời gian tôi đã thử sử dụng noswapfilenhư được đề xuất dưới đây. Cuối cùng tôi đã nhượng bộ và tắt nó đi, bởi vì rõ ràng lợi ích vượt xa những phiền toái - buuuuuut Tôi thực sự không nhớ điều gì đã thuyết phục tôi khôi phục việc sử dụng tập tin hoán đổi. Có lẽ máy tính của tôi bị hỏng và tôi không thể khôi phục một số tệp mà tôi đã mất, điều này sẽ không đáng kể với các tệp hoán đổi được bật.
Kyle Strand

Câu trả lời:


89

Lý do trao đổi tập tin

Hoán đổi tập tin lưu trữ những thay đổi bạn đã thực hiện cho bộ đệm. Nếu Vim hoặc máy tính của bạn gặp sự cố, chúng cho phép bạn khôi phục những thay đổi đó.

Các tệp hoán đổi cũng cung cấp một cách để tránh nhiều trường hợp Vim chỉnh sửa cùng một tệp. Điều này có thể hữu ích trên các hệ thống nhiều người dùng hoặc chỉ để biết nếu bạn có một Vim khác đang chỉnh sửa một tệp.

Vô hiệu hóa tập tin trao đổi

Nếu bạn muốn tắt hoàn toàn việc tạo các tệp hoán đổi (mà tôi không khuyến nghị), thì bạn có thể thêm set noswapfilevào .vimrc. Điều này đặt giá trị toàn cầu của tùy chọn. Sau đó, bạn có thể ghi đè lên bộ đệm cụ thể bằng cách sử dụng :setlocal swapfiletrong khi chạy Vim.

Tổ chức trao đổi tập tin

Nếu vấn đề của bạn liên quan nhiều hơn đến các tệp bổ sung trải rộng xung quanh hệ thống tệp của bạn, thì bạn có thể tổng hợp tất cả các tệp hoán đổi ở một nơi. Ví dụ: tạo một ~/.vim/tmpthư mục và sau đó thêm

set directory^=$HOME/.vim/tmp//

để của bạn .vimrc. Các 'directory'tùy chọn có chứa một danh sách các thư mục mà Vim sẽ sử dụng để thử và lưu trữ các tập tin chuyển đổi.

Các ^=cú pháp cho :setprepends tên thư mục để người đứng đầu danh sách, vì vậy Vim sẽ kiểm tra thư mục đó đầu tiên.

Phần //cuối của tên thư mục báo cho Vim sử dụng đường dẫn tuyệt đối đến tệp để tạo tệp hoán đổi để không xảy ra xung đột giữa các tệp có cùng tên từ các thư mục khác nhau.

Lưu ý rằng điều này sẽ ngăn Vim nhận thấy khi có nhiều người dùng cố gắng chỉnh sửa cùng một tệp. Vì tệp hoán đổi không nằm trong cùng thư mục với tệp gốc, Vim của người dùng khác sẽ không biết về tệp hoán đổi và sẽ không cảnh báo họ rằng nó đã được chỉnh sửa.


4
Lợi ích của các tập tin hoán đổi so với liên tục - cho đến bây giờ nó đã ở trong vim được một thời gian?
alpha_989

Tôi sử dụng vim-auto-save. Điều này không phản đối sự cần thiết của các tập tin trao đổi?
Kevin

@Kevin Nó phụ thuộc. Nếu plugin gây ra sự lưu trong mọi kịch bản mà Vim sẽ viết ra tệp hoán đổi, thì có lẽ. Nếu không, vẫn sẽ có những khoảng thời gian mà bộ đệm không được lưu và một tập tin hoán đổi có thể giúp đỡ.
jamessan

@ alpha_989 Chúng bổ sung cho nhau. Một hoán đổi cho phép bạn khôi phục các thay đổi chưa được lưu. Tệp liên tục hoàn tác cho phép bạn duyệt qua lịch sử trong các phiên Vim, nhưng tệp chỉ được ghi khi bạn lưu.
jamessan

Bất kỳ phương pháp thiết lập vim không trao đổi cho một trường hợp duy nhất? ví dụ vim temp.txt --some-command-that-disable-swap? Trường hợp sử dụng của tôi là một số người theo dõi sẽ tiếp tục theo dõi bất kỳ thay đổi nào trong thư mục, vì vậy chỉ sau đó tôi mới muốn tắt trao đổi để tránh va chạm.
Ng Sek Long
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.