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 vim
onsuz çalıştırmak için.
Herhangi bir dosya düzenleme ile vim
ilgili bir takas dosyası olacak düzenleme yaparken , vim
kullandığı 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 vim
program 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 vim
oturum kilitlendi (çoğunlukla uzaktan düzenleme yaparken bu olur ve ağ oturumu kesilir) Vim oturumu normal bir şekilde çıkılmadıysa ve .swp
dosya geride kalıyorsa, bu ikinci senaryonun bir başka örneği, aktif olarak veya arka plana sahip bir vim
oturumu 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 q
anahtarına basın (Q)uit
ve orijinal vim
oturum aracılığıyla düzenlemeye döndüm .
Bazen tam olarak emin değilseniz, ben (Q)uit
ve 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 vim
oturum 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 r
iç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 vim
ile -r
aş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 ENTER
da 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 vim
oturumu zorla kapat:
:q!
Ardından, iki dosyayı karşılaştırın:
diff notes notes2
Eğer diff
hiç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.