2013-09-05 52 views
6

Làm cách nào để khôi phục tệp vim từ tệp undo mà không cần nhấn undo?Khôi phục tệp vim từ tệp .un ~ mà không cần hoàn tác lệnh

Tôi có tệp vim mà tôi đã lưu trong khi thêm văn bản. Sau đó, tôi chạy lệnh python làm trống nội dung của tệp và tôi có thể thấy một số từ chứa tệp trong tệp .un~ của tệp. Khi tôi cố gắng hoàn tác trong tệp, nó cho biết Already at latest change. Tôi không thể tìm thấy tệp hoán đổi trong thư mục tệp hoán đổi của tôi.

+0

bạn không thể tìm thấy tệp swp, vì bạn đã thoát khỏi vim. đầu ra của 'set bk?' và 'set wb? ' – Kent

+0

Cả hai lệnh đều không tạo ra đầu ra. –

+0

dấu hỏi '?', Là một phần của lệnh. Tôi đang cố gắng để có được thiết lập sao lưu của bạn, để xem nếu nó có thể khôi phục tập tin từ tập tin sao lưu vim của bạn. – Kent

Trả lời

7

Bạn không thể. Thông tin hoàn tác được liên kết với kiến ​​thức cuối cùng của Vim về nội dung của tệp; khi chúng không tương ứng nữa, Vim không thể áp dụng lại các thay đổi. Đây là tài liệu tại :help undo-persistence:

Vim sẽ phát hiện nếu một file undo không còn đồng bộ với tập tin nó được viết cho (với một hash của các nội dung tập tin) và bỏ qua nó khi tập tin được thay đổi sau khi các tập tin hoàn tác được viết, để ngăn chặn tham nhũng.

Tốt nhất bạn có thể làm là cố gắng khắc phục thủ công các bit có thể nhận ra trong tệp hoàn tác, ví dụ: với trình chỉnh sửa hex hoặc chế độ nhị phân của Vim.

+0

Tôi đã quản lý để cứu hộ một số chuỗi chạy chuỗi trên tệp hoàn tác –

4

Không hoàn toàn có thể, vì tệp hoàn tác chỉ chứa văn bản đã được thay đổi trong một thay đổi duy nhất. Nếu bạn ở một thời điểm nào đó đã tải lại tệp, tệp undofile sẽ chứa bộ đệm hoàn chỉnh cho nó và bắt đầu từ đó có thể khôi phục tập tin về mặt lý thuyết (bằng cách đi qua các trạng thái hoàn tác).

Tôi đã viết về vấn đề này trước khi vào vim_use mailinglist herehere (which even contains a patch, that let's you force reading in the undo-file)

Bạn có thể thử để vá vim và xem nếu bạn có thể khôi phục ít nhất một số dữ liệu.

Các vấn đề liên quan