Trường hợp VIM (gvim / macvim) giữ các tệp hoán đổi cho các bộ đệm chưa được lưu / chưa đặt tên?


52

Trường hợp VIM (gvim / macvim) giữ các tệp hoán đổi cho các bộ đệm chưa được lưu / chưa đặt tên? (Nếu nó làm như vậy ở tất cả).

Bối cảnh: Trong suốt cuộc hội thảo nửa căng thẳng, tôi đã ghi chú vào bộ đệm MacVim chưa được đặt tên / chưa được lưu khi MacBook hết nước và hết điện (Nó không ngủ / ngủ đông như thường lệ).

Câu hỏi: Có ai biết nếu có bất kỳ cơ hội nào mà tác phẩm chưa được lưu có thể được lưu vào tệp hoán đổi (.swp) hoặc tương tự, có thể được phục hồi không?

Chi tiết hệ thống: Cụ thể, điều này đã xảy ra khi sử dụng MacVim trên Mac OS X 10.5.8 (Nhưng các gợi ý khôi phục có thể có cho các phiên bản khác cũng được quan tâm). Tôi chưa khởi động lại MacVim trong trường hợp làm như vậy sẽ bắt đầu quá trình dọn dẹp.


1
Làm rõ: Bằng cách chưa lưu tôi có nghĩa là không bao giờ lưu. Tệp được tạo bằng cách nhấn Command-T (tôi nghĩ tương đương với: tabe), tức là một bộ đệm không tên mới được mở trong một tab mới. (Tôi thường làm ': sav somefilename' ở giai đoạn sau.
davur

Không quan trọng. Xem các bổ sung cho câu trả lời của tôi.
frabjous

Câu trả lời:


60

Khởi động vim và thử:

:recover <filename>

Nếu tệp không bao giờ có tên, thì chỉ cần:

:recover

Đó là đặt cược tốt nhất của bạn. Để biết thêm về các tập tin trao đổi và phục hồi, xem:

:help usr_11

Về các tệp hoán đổi, thông thường chúng được lưu trong cùng thư mục với tệp đang được chỉnh sửa, nhưng với a. đã thêm phần đầu để làm cho nó bị ẩn và .swp ở phần cuối, nhưng có thể di chuyển chúng đi nơi khác bằng một cái gì đó như:

:set directory=~/vimswap

hoặc tương tự.

Xem:

:help swap

Đối với tất cả các chi tiết.

Tuy nhiên, một tệp hoán đổi vim không giống như bộ đệm đã chỉnh sửa, do đó hãy chắc chắn đọc trên đó về những gì có thể được thực hiện để phục hồi.


EDIT : ý kiến ​​trả lời câu hỏi:

. - dsclementsen ngày 5 tháng 10 'lúc 1:42

Ngoài ra, hãy chắc chắn kiểm tra dòng lệnh vim -r arg. Điều này sẽ in ra tất cả các tập tin trao đổi được tìm thấy và nơi họ đang có. Ngoài ra, nó sẽ có rất nhiều thông tin bổ sung như ngày / sửa đổi / tên người dùng / v.v ... - Neg_EV ngày 5 tháng 10 'lúc 13:49


Điều này sẽ không giúp đỡ. Bởi chưa được lưu, tôi có nghĩa là không bao giờ được lưu. Có nghĩa là tôi đã mở một bộ đệm mới với: tabe hoặc (Command + T). Vì vậy, chúng ta đang nói về một bộ đệm chưa được lưu / chưa được đặt tên. Có một vị trí mặc định nơi loại công việc chưa được lưu này được lưu trữ không?
davur

3
Hãy thử :recoverkhông có tên tập tin. Tôi chỉ kiểm tra rằng để khôi phục một tập tin chưa được đặt tên và nó đã hoạt động. Dù sao, ngay cả khi lệnh cụ thể đó không giúp ích, việc đọc các tệp trợ giúp đó có thể.
frabjous

1
Nó không xa như tôi có thể nói. Tôi vừa kiểm tra bằng cách giết vim bên ngoài trong khi chỉnh sửa một tệp mới. Nhưng khi tôi chạy recovermà không có đối số, nó cho phép tôi chọn ngay cả từ một số phiên cũ hơn. Dù sao, tệp .swp cho một bộ đệm không có khả năng có thể nằm trong / tmp, nhưng nó sẽ ở một nơi khác tùy thuộc vào việc bạn có set directory= <something>.
frabjous

2
Ngoài ra, hãy chắc chắn kiểm tra dòng lệnh vim -r arg. Điều này sẽ in ra tất cả các tập tin trao đổi được tìm thấy và vị trí của chúng. Ngoài ra, nó sẽ có rất nhiều thông tin bổ sung như ngày / sửa đổi / tên người dùng / v.v ...
Neg_EV

1
Tôi đã phải sử dụng lệnh :recover!để khôi phục tập tin chưa được lưu của tôi.

2

Tôi làm việc trên Windows 10 và :recoverkhông tìm thấy tệp hoán đổi. vim -rliệt kê tệp hoán đổi từ phiên chỉnh sửa cuối cùng (cũng không bao giờ được lưu) có tên _.swp. Phục hồi là có thể với :recover _.


1

Câu trả lời là: khắp nơi. Bí quyết là tìm đúng. Một số trong thư mục / tmp của bạn, nhưng rất nhiều trong số chúng ở đâu đó trong thư mục chính của bạn.

Có thể có nhiều cách hiệu quả hơn để làm điều này, nhưng cách sau đây hiệu quả với tôi khi tôi mất một tệp không tên (trên MacBook):

trong thư mục chính, tìm kiếm các tập tin sao lưu (mất vài giây và có thể được làm cho thông minh hơn):

find ./ -name ".s*" > findVimBackups.txt

mở tập tin:

vim findVimBackups.txt

xóa tên tệp không sao lưu các tệp không tên:

:g!/\/\.s..$/d
:g/svn/d

Bây giờ tôi thấy một danh sách các vị trí của các tập tin sao lưu không tên. Trong mỗi thư mục đó, tôi chạy các mục sau cho đến khi tôi tìm thấy (các) tệp từ hôm nay:

ls -ltra <directory>

Tôi cd vào thư mục bên phải và mở vim và gõ: recovery và chọn bản sao lưu chính xác.


0

Có vẻ như chúng sẽ kết thúc trong thư mục làm việc của bạn :pwdĐây là bất cứ nơi nào bạn mở vim hoặc thay vào đó bạn có thể đã đặt nó bằng cách sử dụng :cdhoặc tương tự.

trao đổi tập tin cho bộ đệm không tên dường như chỉ bị bỏ ở đó mà không có tên tệp, vì vậy bạn sẽ kết thúc với .swp .swn .swo, v.v. hậu tố khác nhau!

Tôi đoán rằng có rất nhiều bộ đệm không tên với các thay đổi có thể là nguyên nhân và xóa các bộ đệm này đã khiến các tệp bí ẩn biến mất

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.