VIM (gvim / macvim), kaydedilmemiş / adsız arabelleklerin takas dosyalarını nerede tutuyor?


52

VIM (gvim / macvim), kaydedilmemiş / adsız arabelleklerin takas dosyalarını nerede tutuyor? (Eğer öyle yaparsa).

Arkaplan: Yarı yoğun bir seminer boyunca, MacBook meyve suyunu tükettiğinde ve hiçbir yerden bitmediğinde adlandırılmamış / kaydedilmemiş bir MacVim tamponunda not tutuyordum.

Soru: Kaydedilmemiş eserin, bir takas (.swp) dosyasına veya benzeri bir duruma geri kazanılmış olabileceği ihtimalinin olup olmadığını bilen var mı?

Sistem detayları: Özellikle bu Mac OS X 10.5.8'deki MacVim kullanılarak gerçekleşmiştir (Ancak diğer sürümler için olası kurtarma ipuçları da önemlidir). MacVim'i henüz yeniden başlatmadım, bunun yapılması durumunda temizleme işlemini başlatabilir.


1
Açıklama: Kaydedilmemiş olarak, asla kurtarılmadığım anlamına gelir. Dosya Command-T tuşlarına basılarak oluşturulmuştur (bence eşdeğer: tabe), yani yeni bir isimsiz tampon yeni bir sekmede açılır. (Genelde ': bazı
dosya adlarını kaydet

Önemli değil. Cevabımın eklerine bakınız.
frabjous

Yanıtlar:


60

Vim'i başlat ve dene:

:recover <filename>

Dosyanın hiçbir adı yoktu, o zaman basitçe:

:recover

Bu senin en iyi seçeneğin. Dosyaları değiştirme ve kurtarma hakkında daha fazla bilgi için, bkz:

:help usr_11

Takas dosyaları hakkında, genellikle düzenlenmekte olan dosyayla aynı dizine kaydedilirler, ancak a. sonunda gizlemek ve .swp yapmak için başlangıcı ekledi, ancak bunları aşağıdaki gibi başka bir yere taşımak mümkündür:

:set directory=~/vimswap

veya benzeri.

Görmek:

:help swap

Tüm detaylar için.

Bir vim takas dosyası düzenlenmiş arabellekle aynı değildir, bu nedenle, kurtarma için yapılabilecekleri orada okuduğunuzdan emin olun.


EDIT : soruyu cevaplayan yorumlar:

[…] Görünen o ki çalışma dizininizde, takas dosyalarınız için ~ / tmp, / var / tmp ve / tmp dosyalarına bakacaksınız ve benim durumumda her zaman güncel bir çalışma dizini kümem var ve orası kaydedildiği yer. - dsclementsen 5 Eki 10: 1:42

Ayrıca, vim -r komut satırı argümanını da kontrol ettiğinizden emin olun. Bu, bulunan tüm takas dosyalarını ve nerede olduklarını yazdıracaktır. Ek olarak, date / modifiye / kullanıcı adı / etc gibi birçok ekstra bilgiye sahip olacak ... - Neg_EV 5 Eki 10 '10: 13: 49


Bu yardımcı olmayacak. Kaydedilmemiş olarak, asla kurtarmadım. Anlamı ile yeni bir tampon açtı: tabe veya (Command + T). Yani kaydedilmemiş / isimsiz bir tampondan bahsediyoruz. Bu tür kaydedilmemiş çalışmaların depolandığı varsayılan bir yer var mı?
davur

3
:recoverDosya adı olmadan deneyin . Ben sadece isimsiz bir dosyayı kurtarmak için test ettim ve işe yaradı. Neyse, belirli bir komut yardımcı olmasa bile, bu yardım dosyalarını okumak yardımcı olabilir.
frabjous

1
Söyleyebileceğim kadarıyla değil. Yeni bir dosyayı düzenlerken dıştan vim'i öldürerek test ettim. Ancak recovertartışmasız koştuğumda , bazı eski oturumlardan bile seçmeme izin verdi. Neyse, isimsiz bir arabellek için .swp dosyası muhtemelen / tmp dizinindedir, ancak sahip olup olmadığına bağlı olarak başka bir yerde olur set directory= <something>.
frabjous

2
Ayrıca, vim -r komut satırı argümanını da kontrol ettiğinizden emin olun. Bu, bulunan tüm takas dosyalarını ve nerede olduklarını yazdıracaktır. Ek olarak, date / modifiye / kullanıcı adı / etc gibi birçok ek bilgiye sahip olacak ...
Neg_EV

1
:recover!Kaydedilmemiş dosyamı kurtarmak için komutu kullanmak zorunda kaldım .

2

Windows 10'da çalışıyorum ve :recovertakas dosyası bulamadım. vim -rtakas dosyasını _.swp adındaki son düzenleme oturumundan (aynı zamanda asla kaydedilmedi) listeledi. Kurtarma ile mümkün oldu :recover _.


1

Cevap: her yerde. Hile doğru olanı bulmak. Bazıları / tmp dizininizde, ancak bir çoğu ana dizininizin altında.

Bunu yapmanın daha verimli yolları olabilir, ancak adsız bir dosyayı kaybettikten sonra (MacBook'ta) aşağıdakiler işe yaradı:

Ana dizinde, yedekleme dosyalarını arayın (birkaç saniye sürer ve muhtemelen daha akıllı hale getirilebilir):

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

açık dosya:

vim findVimBackups.txt

adsız dosyaların yedekleri için olmayan dosya adlarını kaldırın:

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

Şimdi adsız yedekleme dosyalarının konumlarının bir listesini görüyorum. Bu dizinlerin her birinde, dosyaları bugünden bulana kadar aşağıdakileri çalıştırıyorum:

ls -ltra <directory>

Sağ dizine girip vim yazıp şunu yazın: recover ve doğru yedeği seçin.


0

Çalışma dizininizde bitecek gibi görünüyor :pwdBu, vim'i açtığınız her yerde veya dönüşümlü olarak kullanarak :cdveya benzeri ayarlamış olabilirsiniz .

adsız arabelleklerin takas dosyaları sadece dosya adı olmadan oraya atılmış gibi görünüyor, bu yüzden .swp .swn .swo vb. ile bitirdiniz farklı sonekler!

Değişikliklere sahip birçok adsız arabellek bulundurmanın nedeni olabilir ve bu arabellekleri silmek gizem dosyalarının kaybolmasına neden olmuş olabilir.

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.