Di mana VIM (gvim / macvim) menyimpan file swap untuk buffer yang belum disimpan / tidak bernama?

52

Di mana VIM (gvim / macvim) menyimpan file swap untuk buffer yang belum disimpan / tidak bernama? (Jika itu terjadi sama sekali).

Latar Belakang: Sepanjang seminar semi-intens, saya mencatat di buffer MacVim yang tidak disebutkan namanya / tidak disimpan ketika MacBook kehabisan jus dan mati secara tiba-tiba (Tidak tidur / berhibernasi seperti biasanya).

Pertanyaan: Adakah yang tahu jika ada kemungkinan bahwa karya yang belum disimpan mungkin telah disimpan ke file swap (.swp) atau sejenisnya, yang dapat dipulihkan?

Detail sistem: Khususnya ini terjadi menggunakan MacVim pada Mac OS X 10.5.8 (Tetapi petunjuk pemulihan yang mungkin untuk versi lain juga menarik). Saya belum memulai ulang MacVim jika seandainya hal itu akan memulai proses pembersihan.

davur
sumber
1
Klarifikasi: Maksud saya belum diselamatkan berarti tidak pernah menyelamatkan. File dibuat dengan menekan Command-T (saya pikir setara dengan: tabe), yaitu buffer tanpa nama baru dibuka di tab baru. (Saya biasanya akan melakukan ': sav somefilename' pada tahap selanjutnya.
davur
Tidak masalah. Lihat tambahan untuk jawaban saya.
frabjous

Jawaban:

60

Mulai vim dan coba:

:recover <filename>

Jika file tidak pernah memiliki nama, maka cukup:

:recover

Itu taruhan terbaikmu. Untuk informasi lebih lanjut tentang swap file dan pemulihan, lihat:

:help usr_11

Tentang file swap, biasanya file tersebut disimpan dalam direktori yang sama dengan file yang sedang diedit, tetapi dengan a. menambahkan awal untuk membuatnya tersembunyi dan .swp pada akhirnya, tetapi dimungkinkan untuk memindahkannya ke tempat lain dengan sesuatu seperti:

:set directory=~/vimswap

atau serupa.

Lihat:

:help swap

Untuk semua detailnya.

Namun, file swap vim tidak sama dengan buffer yang diedit, jadi pastikan untuk membaca apa yang dapat dilakukan untuk pemulihan.


EDIT : komentar menjawab pertanyaan:

[…] Tampaknya terlihat di direktori kerja Anda saat ini, ~ / tmp, / var / tmp dan / tmp untuk bertukar file dan dalam kasus saya, saya selalu memiliki set direktori kerja saat ini dan di situlah disimpan. - dsclementsen 5 Okt 10 'jam 1:42

juga, pastikan untuk memeriksa arg baris perintah vim -r. Ini akan mencetak semua file swap yang ditemukan dan di mana mereka berada. Selain itu, ia akan memiliki banyak informasi tambahan seperti tanggal / diubah / nama pengguna / dll ... - Neg_EV 5 Okt '10 pada 13:49

luar biasa
sumber
Ini tidak akan membantu. Dengan belum selamat, maksud saya tidak pernah diselamatkan. Artinya saya membuka buffer baru dengan: tabe atau (Command + T). Jadi kita berbicara tentang buffer yang belum disimpan / tidak bernama. Apakah ada lokasi default tempat karya yang belum disimpan semacam ini disimpan?
davur
3
Coba :recovertanpa nama file. Saya baru saja mengujinya untuk memulihkan file yang tidak disebutkan namanya dan berhasil. Lagi pula, bahkan jika perintah tertentu itu tidak membantu, membaca file bantuan itu mungkin.
frabjous
1
Tidak sejauh yang saya tahu. Saya baru saja menguji dengan mematikan vim secara eksternal saat mengedit file baru. Tetapi ketika saya berlari recovertanpa argumen, saya dapat memilih dari beberapa sesi sebelumnya. Pokoknya, file .swp untuk buffer yang tidakma mungkin dalam / tmp, tetapi itu akan berada di tempat lain tergantung pada apakah Anda punya set directory= <something>.
frabjous
2
juga, pastikan untuk memeriksa arg baris perintah vim -r. Ini akan mencetak semua file swap yang ditemukan dan di mana mereka berada. Selain itu, ia akan memiliki banyak informasi tambahan seperti tanggal / diubah / nama pengguna / dll ...
Neg_EV
1
Saya harus menggunakan perintah :recover!untuk memulihkan file saya yang belum disimpan.
2

Saya bekerja pada Windows 10 dan :recovertidak menemukan file swap. vim -rterdaftar file swap dari sesi edit terakhir (juga tidak pernah disimpan) bernama _.swp. Memulihkan dimungkinkan dengan :recover _.

rolacher
sumber
1

Jawabannya adalah: semua tempat. Kuncinya adalah menemukan yang tepat. Beberapa ada di direktori / tmp Anda, tetapi banyak dari mereka berada di suatu tempat di bawah direktori home Anda.

Mungkin ada cara yang lebih efisien untuk melakukan ini, tetapi yang berikut ini berfungsi untuk saya ketika saya kehilangan file yang tidak disebutkan namanya (di MacBook):

di direktori home, cari file cadangan (perlu beberapa detik, dan mungkin bisa dibuat lebih pintar):

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

membuka file:

vim findVimBackups.txt

hapus nama file yang bukan untuk cadangan file yang tidak disebutkan namanya:

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

Sekarang saya melihat daftar lokasi file cadangan yang tidak disebutkan namanya. Di masing-masing direktori saya menjalankan yang berikut sampai saya menemukan file dari hari ini:

ls -ltra <directory>

Saya cd ke direktori yang benar dan buka vim dan ketik: recover dan pilih cadangan yang benar.

TimHelck
sumber
0

Tampaknya mereka akan berakhir di direktori kerja Anda :pwdIni adalah di mana pun Anda membuka vim atau secara bergantian Anda mungkin telah mengaturnya menggunakan :cdatau serupa.

swap file untuk buffer tanpa nama sepertinya baru saja dibuang ke sana tanpa nama file sehingga Anda akan berakhir dengan .swp .swn .swo dll. Saya menemukan ini bukan ketika mencoba memulihkan sesuatu tetapi ketika file hg abaikan saya tidak cukup menutupi. sufiks yang berbeda!

Saya menduga memiliki banyak buffer tanpa nama dengan perubahan mungkin menjadi penyebabnya dan menghapus buffer ini menyebabkan file misteri menghilang

JonnyRaa
sumber