Orijinal dosyayı bir .swp dosyasından nasıl kurtarabilirim?


57

.Swp dosyasını kullanarak açmayı denedim vive catancak önemsiz görünüyor.


Vi veya vim kullanıyor musunuz?
frabjous

Bu işe yarıyor emacsmu? (ya da son derece nano Ed, vs.)
Frank

Yanıtlar:


94
vim -r .swp

Bu kurtarma moduna geçer ve size daha fazla bilgi verir. Sanırım istediğin bu.

.swXKaydedilmemiş bir dosya ile bir oturum öldürülürse / çökerse / başka kötü bir şey olursa -files geride kalır. Ayrıca, Vim oturumunda kaydedilmemiş bir arabellek açık olduğu zaman mevcuttur. vim -rbu geçici dosyaları okur ve içeriği yeniden oluşturur. Kurtardıktan sonra, her zamanki gibi kaydedin, örneğin :w newfilename.


8
Tam olarak aradığım şeydi. Bir başkası için, henüz kaydedilmemiş dosyaları nasıl kurtardığınızdır . Bir dosya zaten varsa, yukarıdaki yöntemler işe yarar, ancak adsız bir dosyayı açamazsınız.
Eric Hu

17

.Swp dosyasını kurtarmak için orijinal dosyaya ihtiyacınız yoktur. Sadece dosyayı varmış gibi açın. vim, .swp uzantılı dosyayı arayacak ve kurtarmayı önerecektir.

Örneğin:

$ 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:

Kurtarmak için sadece R tuşuna basın ve: wq dosyasını

Düzenleme: .swp dosyasının yalnızca dosyada yapılan değişiklikleri içerdiğini unutmayın (bkz. Yorum). Bu, dosyanın son bir kopyasını yedekten almanız ve ardından en son değişiklikleri kurtarmak için vim kullanmanız gerektiği anlamına gelir. Dosyanın yedek bir kopyasına sahip değilseniz, gerçekten şansınız kalmaz.


2
Kesinlikle orjinal dosyaya sahip olmalısınız, onsuz .swp dosyasındaki veriler işe yaramaz. Bkz. ": Takas dosyasına yardım et". Orijinal dosya olmadan çalışıyor gibi görünebilir durumlar vardır, ancak .swp dosyası yalnızca değişiklik bilgilerini depolar ve kurtarma sırasında bu bilgileri uygulamak için bazı başlangıç ​​noktaları gerektirir.
Heptit

Haklısın tabi ki. Aslında bunu vim hakkında bilmiyordum. Ancak, asıl dosyanın tam bir kopyasının saklanması çok büyük bir israf olacağı için mantıklıdır. Sonra cevap: Dosyanızı yedekten kurtarın, ardından en son değişiklikleri kurtarmak için vim kullanın.
Vegar Westerlund

Dosyanın tamamını tek bir swp'de saklamak israf olur, evet, ama swp dosyalarını biriktirmede potansiyel bir değer görüyorum (etkin olduğunda.) Farklı düzenlemeler yapıp orijinali yalnızca açık kaydetme işlemine eklemenizin nedeni aynı Eğer bir fark dizisi oluşturabilirseniz, kısmi bir miktar oluşturabilirsiniz (bugünden önceki tarihler -> gecelik; gece + bugün = güncel) vs. Buldum ': pre [service] `in manuel olarak, bu şekilde çalıştığını düşünüyorum. Her durumda, en önemli çizgi:The original file is no longer needed for recovery.
John P

Çalışıyor gibi görünüyor - :preserveve :set cpoptions=...&bir .swp ve .swo dosyası dizinde bırakır ve her ikisinden de kurtarmayı önerir. Kullanarak vim -r <file>.swp ve .swo arasında seçim yapabilirsiniz. Diğer düzenlemeler, bu noktaya kadar olan swapların kısmi toplamı gibi görünen .swn, .swm vb. Beğendiğiniz ve düzenleyeceğiniz sürüme geri dönebilir (~ = çatal) veya kaydedebilirsiniz (~ = stash). Sonunda, takas dosyalarını toplayabilir, yedeklerini arka plana çıkarabilirsiniz, vs. Daha büyük dosyalara gelince ayrıntılar hakkında yanılmış olabilirim - bunun da ekstra takas dosyalarını nasıl etkilediğinden emin değilim - aşağıya bakın.
John P 16

(Devam) - arabellek bayrakları taşır ve takas dosyalarını üreten arabellektir, bu nedenle bayraklar genel yapılandırma veya otomatik yükleme ayarlı olmasa bile kurtarma işlemi sırasında miras alınır. Bir kurtarma sırasını tek bir kurtarma dosyasıyla değiştirmek için, .swp ile değiştirmek istediğiniz değişikliği taşıyabilir ve gerisini gizleyebilirsiniz. Herhangi biri boşlukları doldurabilirse, dosya kurtarma ve Vim oturum yönetimi arasındaki çakışma hakkında daha fazla bilgi edinmek isterim.
John P 16


7

Takas dosyasını açın 1 .file.swpdevim

2 :recoverdosyanızı kurtaracak


7

Vegar Westerlund ve Heptite yorumlarını okuduktan sonra, hangi noktada vim'in bir .swp dosyasından kurtarmak için orijinal dosyaya (veya bir yedeklemeye) ihtiyacı olduğunu bilmek istedim. İşte ne yaptım:

975 satırlık bir dosyayı açtım, 949 satırında (bir .swpdosya oluştururken ) düzenledi ve işlemi öldürdüm, sonra orijinali sildim. $ vim Original_File.swp »> yes adresinden kurtarmak isteyip istemediğimi sordu; sadece ilk 68 satır ve son 34 satır (düzenlememin 8 satırından başlayarak) gerçekten kurtarıldı.

Daha sonra testi daha küçük dosyalar ile tekrarladım: 20'den 200 satıra kadar .swp dosyası orijinal içeriğin % 100'ünü içeriyordu . Fakat 300 satırda, sadece ilk 68 ve son 18 satır (düzenlememin 2 satırından başlayarak) .swp'ye dahil edildi.

Sonuç olarak, vim'in her zaman dosyanın "başlık" ve "alt" slarını .swp dosyalarına kaydettiğini bilmek iyidir. Belki de bir .swp ne kadar satır içermesi gerektiğini kontrol etmek için bir ayar vardır?

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.