Tôi đã thử mở tệp .swp bằng cách sử dụng vi
và cat
nó hiển thị rác.
emacs
? (hoặc cao siêu, nano, ed, v.v.)
Tôi đã thử mở tệp .swp bằng cách sử dụng vi
và cat
nó hiển thị rác.
emacs
? (hoặc cao siêu, nano, ed, v.v.)
Câu trả lời:
vim -r .swp
Điều này đi vào chế độ phục hồi và cung cấp cho bạn thêm thông tin. Tôi nghĩ rằng đây là những gì bạn muốn.
.swX
-files bị bỏ lại nếu một phiên có tệp chưa được lưu bị hủy / sự cố / điều gì đó xấu xảy ra. Chúng cũng có mặt trong thời gian bộ đệm chưa lưu được mở trong phiên Vim. vim -r
đọc các tập tin tạm thời và tạo lại nội dung. Sau khi bạn đã phục hồi nó, chỉ cần lưu nó như bình thường, ví dụ :w newfilename
.
Bạn không cần phải có tệp gốc để khôi phục .swp. Chỉ cần mở tập tin như thể nó tồn tại. vim sẽ tìm tệp có phần mở rộng .swp và đề nghị khôi phục nó.
ví dụ:
$ ls -a
. .. .test.txt.swp
$ vim test.txt
[...]
Swap file ".test.txt.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:
Chỉ cần nhấn R để khôi phục nó và: wq tập tin
Chỉnh sửa: Lưu ý rằng tệp .swp chỉ chứa các thay đổi được thực hiện đối với tệp (xem bình luận). Điều này có nghĩa là bạn sẽ cần tìm nạp một bản sao gần đây của tệp từ bản sao lưu và sau đó sử dụng vim để khôi phục các thay đổi mới nhất. Nếu bạn không có bản sao lưu của tập tin, bạn thực sự không gặp may.
The original file is no longer needed for recovery.
:preserve
và :set cpoptions=...&
để lại tệp .swp và .swo trong thư mục và đề nghị khôi phục từ một trong hai. Sử dụng vim -r <file>
bạn có thể chọn giữa .swp và .swo. Các chỉnh sửa tiếp theo tạo ra .swn, .swm, v.v., dường như là tổng của một phần của các giao dịch hoán đổi cho đến thời điểm đó. Bạn có thể trở lại phiên bản theo ý thích và chỉnh sửa (~ = fork) hoặc lưu (~ = stash). Cuối cùng, bạn có thể tạo ra các tệp hoán đổi, tạo các bản sao lưu của chúng, v.v. Tôi có thể sai về các chi tiết khi nói đến các tệp lớn hơn - tôi cũng không chắc điều đó ảnh hưởng đến các tệp hoán đổi thêm như thế nào - xem bên dưới.
Mở tệp gốc bằng vim và chọn tùy chọn khôi phục.
Sau khi đọc các bình luận Vegar Westerlund và Heptite, tôi muốn biết tại thời điểm nào vim cần tệp gốc (hoặc bản sao lưu) để khôi phục từ tệp .swp. Đây là những gì đã làm:
Tôi đã mở tệp 975 dòng, chỉnh sửa nó trên dòng 949 (tạo .swp
tệp) và giết tiến trình, sau đó xóa bản gốc. $ vim Original_File
hỏi nếu tôi muốn phục hồi từ .swp »> có; chỉ có 68 dòng đầu tiên và 34 dòng cuối cùng (bắt đầu 8 dòng trên bản chỉnh sửa của tôi) mới thực sự được phục hồi.
Sau đó, tôi đã lặp lại thử nghiệm với các tệp nhỏ hơn: Từ 20 đến 200 dòng, tệp .swp chứa 100% nội dung gốc . Nhưng ở 300 dòng, chỉ có 68 dòng đầu tiên và 18 dòng cuối cùng (bắt đầu 2 dòng trên bản chỉnh sửa của tôi) được đưa vào .swp.
Để kết luận, thật tốt khi biết rằng vim luôn lưu "tiêu đề" và "dưới cùng" của tệp trong các tệp .swp. Có lẽ có một cài đặt để kiểm soát .swp nên chứa bao nhiêu dòng?