Bu mesaj, potansiyel olarak kaydetmediğiniz metinleri kaybetmemeyi umursanız oldukça önemlidir . O gerektiğini değil can sıkıcı düşünülmelidir ve gerektiği değil aceleyle takas dosyası veya yapılandırmak silmek neden vimonsuz çalıştırmak için.
Herhangi bir dosya düzenleme ile vimilgili bir takas dosyası olacak düzenleme yaparken , vimkullandığı değişiklikleri izlemek için. Bir dosyayı düzenlemeyi bıraktığınızda vim, karşılık gelen takas dosyasını otomatik olarak atar. Bu nedenle, bir takas dosyasının mevcudiyeti ve orijinal dosyaya yazma girişiminiz dikkate alınmalı ve uygun işlem yapılmalıdır.
( E325: ATTENTION Found a swap file) Mesajında sunulan iki senaryo aslında oldukça yaygındır: (1) başka bir vimprogram düzenlemeye çalıştığınız dosyayı düzenliyor (aslında başka bir kişi olabilir - bu durumda gerçekten mantıklı olmaz) takas dosyasını sadece kör bir şekilde silmek için - veya başka bir terminal penceresinde veya sekmesinde olabilirsiniz), veya (2) önceki bir vimoturum kilitlendi (çoğunlukla uzaktan düzenleme yaparken bu olur ve ağ oturumu kesilir) Vim oturumu normal bir şekilde çıkılmadıysa ve .swpdosya geride kalıyorsa, bu ikinci senaryonun bir başka örneği, aktif olarak veya arka plana sahip bir vimoturumu olan terminal penceresini veya sekmesini yanlışlıkla kapatmış olmanızdır ).
Bu mesajla karşılaştığımda, ilk önce normalde her biri birkaç sekme içeren birkaç terminal penceresiyle çalıştığım için bu dosyayı başka bir terminal penceresinde veya sekmesinde düzenlediğimi düşünüyorum:

Başka bir yerde düzenlediğimi fark edersem ve ona geri dönebilirsem , bu ek oturumun qanahtarına basın (Q)uitve orijinal vimoturum aracılığıyla düzenlemeye döndüm .
Bazen tam olarak emin değilseniz, ben (Q)uitve sonra aynı terminalde jobsçalışıp çalışmadığımı doğrulamak için koşarım vim; Hiçbir şey çıkmazsa, başka bir yerde ps -ef | grep vimçalışıp çalışmadığımı kontrol etmek için koşarım vim(başka bir terminal penceresinde veya sekmesinde). Mesele şu ki, her zaman orijinal vimoturum aracılığıyla düzenlemeye devam etmeye çalışıyorum .
Ben orijinal düzenleme oturumuna döndüremez eminim ve ben hala aşağıdaki seçenekler sunulur am, o zaman basın riçin (R)ecover.
Swap file ".notes.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:
Tuşuna basarak r, şöyle bir mesaj göreceksiniz:
Swap file ".notes.swp" already exists!
"notes" 18L, 46C
Using swap file ".notes.swp"
Original file "/private/tmp/notes"
Recovery completed. Buffer contents equals file contents.
You may want to delete the .swp file now.
Press ENTER or type command to continue
Eğer, diğer taraftan, ben artık ben kabuğunda istemi çünkü, o zaman koşmak, bu seçeneklerden ile karşı karşıya am vimile -raşağıdaki gibi, seçenek:
vim -r notes
Elde edilen mesaj benzer olacaktır:
Using swap file ".notes.swp"
Original file "/private/tmp/notes"
Recovery completed. Buffer contents equals file contents.
You may want to delete the .swp file now.
Press ENTER or type command to continue
Her iki durumda ENTERda devam etmek için düğmesine basın , dosyanızı göreceksiniz.
Not: Vim, bulduklarından şüpheleniyorsa, bir hata mesajı verecek ve "???" ile satır ekleyecektir. Metinde. Kurtarma sırasında bir hata mesajı görürseniz, dosyada "???" için arama yapın. Neyin yanlış olduğunu görmek için. İhtiyacınız olan metni almak için kesmek ve yapıştırmak isteyebilirsiniz.
En yaygın açıklama "??? LINES MISSING" dır. Bu, Vim'in metni orijinal dosyadan okuyamadığı anlamına gelir. Bu, sistem çöktü ve orijinal dosyanın parçaları kaydedilmediyse olabilir.
Bununla birlikte, bu ???izleri hiç görmedim , bu yüzden bu gerçekten nadir görülen bir durum olmalı .
Daha sonra, içeriği başka bir dosyaya kaydedin (yani yazın) (genellikle orijinal dosya adının sonuna "2" eklerim):
:w notes2
Sonra, bu vimoturumu zorla kapat:
:q!
Ardından, iki dosyayı karşılaştırın:
diff notes notes2
Eğer diffhiçbir şey döndürmezse , bu hiçbir fark olmadığı anlamına gelir ve hem takas dosyası hem de ikinci dosyayı kaldırmak güvenlidir:
rm .notes.swp notes2
Bu noktada, orijinal dosyayı açın ve daha önce hiç sorun olmamış gibi devam edin:
vim notes
Bir diffşey döndürürse , bu, orijinal dosyanın (takas dosyası aracılığıyla) kurtarma işlemi sayesinde ikinci dosyaya kaydedilmiş olduğu anlamına gelir.
Bu değişiklikler ikinci dosyada yakalandığından, takas dosyasını silmek ve ikincisiyle orijinal dosyanın üzerine yazmak güvenlidir:
rm .notes.swp
remove .notes.swp? y
mv notes2 notes
overwrite notes? (y/n [n]) y
Bu noktada, orijinal dosyayı açın ve daha önce hiç sorun olmamış gibi devam edin:
vim notes
Bu çok iş gibi görünüyor, ancak bir kez iş akışına alışınca en fazla 20 saniye sürüyor.