2013-10-31 16 views
5

Gentoo, vim sürümü gerekmez açık dosya /tmp/.* 7.3.762Vim hatası: kaçıp bazı komutlar geçici dosyalar

Sorun:
SADECE vim örneği için koştu edildiğinde oldu uzun bir süre (2 saat gibi). Sonra eklenti fugitive içinde :Gstatus gibi geçici dosyaları gerektiren bazı komutlar ran, bir hata alırsınız:

can't open file /tmp/RANDOM_NAME 

Ben sebebi buna neyin sebep olduğunu çözemiyorum. İşletim sisteminin otomatik temizleme stratejisiyle ilgisi var mı?
fugitive komutları çalıştırarak, ancak aşağıda da işlev ben sadece bu sorunla karşılaştı Çünkü:

" Use ranger as vim's file chooser 
fun! RangerChooser() 
    silent !ranger --choosefile=/tmp/chosenfile $([ -z '%' ] && echo -n . || dirname %) 
    if filereadable('/tmp/chosenfile') 
     exec 'edit ' . system('cat /tmp/chosenfile') 
     call system('rm /tmp/chosenfile') 
    endif 
    redraw! 
endfun 
+0

foler evinizdeki vimrc dosyasına bu ekleyin ve klasör .tmp oluşturmak/tmp bu karşılaştığınız? – user2864740

+0

doldurur sanal bir sistem olup Aynı zamanda vim oturumunda bir çeşit harikulade bir devlet gibi gözüküyor, her zaman bir vim yeniden başlıyor ve diğer vim oturumlarını etkilemiyor. Aynı anda çalışıyor. Sistem() 'nin kendisi ile ilgili bir sorun var. Hataları: 'echo sistemi ('ls')' ile olduğunda yeniden üretebilirim. –

cevap

8

Bu soruna rastladım çünkü yakın zamanda fish'dan bash numaralı telefona kabuk değiştirdim. Benim vimrc sabit problemde Kabuğuma değiştirme:

set shell=/bin/bash

2

Ben fugutive eklenti tempname kullanımını() iç vim işlevi yapar biliyorum. Bu işlev, Unix stili sistemlerde/tmp dizininde bulunan bir dosya adının bir dosya yolunu döndürür. Bu hata, dizin artık orada değilse oluşabilir. Emin olduğun şey bu olduğundan emin değilim ama kontrol etmesi gereken bir şey.

:echo isdirectory(fnamemodify(tempname(), ":p:h")) yazarsanız ve 0 değerini döndürürse, :call mkdir(fnamemodify(tempname(), ":p:h"))'un soruna neden olup olmadığına bakın.

+0

Ne yazık ki bu problemin yakın zamanda tekrar görmediğini görmedim ~ (linux çekirdeğimi 3.8'den 3.10.7'ye yükselttim). Vim hala onu kullanırken OS, tempfile temizlemek herhangi bir olasılık olup olmadığını merak ediyordum. –

+0

İlginç. Yardım etmesini beklemiyordum ama ': mkdir'i çağır (fnamemodify (tempname(),": p: h "))' sorunu giderir. Görünüşe bakılırsa, vim altından bir tmp yolunu ': call system ('rm -rf'. Fnamemodify (tempname(), ': p: h'))' ile silerek bu bozuk duruma vim alabilirsiniz. –

1

Bu eski iplik olduğunu biliyorum. Hala birisine yardımcı olması durumunda postalama.

Bu hatayı sistemimde kısa süre önce gördüm. Dosya adı "/ tmp // /" çıktı,/tmp/dizini birkaç gün boyunca çalışmış olan vim örneğimi başlattıktan sonra temizlendi.

Hızlı bir mkdir /tmp/<random-dir-name> düzeltildi. vim yeniden başlatmaya gerek kalmadan sorunu.

0

Belki

let $TMPDIR = $HOME."/tmp" 
İlgili konular