2010-06-23 19 views
76

vimscript numaralı belgede, dosyanın geçerli dizinde bir işlevde olup olmadığını kontrol etmek için zarif bir yol arıyorum.vimscript: Belirli bir dosya mevcutsa nasıl algılanır

Buraya geldim ama en zarif çözüm (eğer varsa vim seçeneğini ayarlayacağım) emin değilim - dosya adının başka bir karşılaştırmasını yapmak zorunda kalmamanın herhangi bir yolu var - belki farklı vim kullanın yerleşik fonksiyonu (?):

:function! SomeCheck() 
: if filereadable("SpecificFile") 
:  echo "SpecificFile exists" 
: endif 
:endfunction 

cevap

107

çok daha iyi görünüyor bunu bulmuşken vim man içinde arama yapmak biraz ile orijinal olduğunu filereadable ve bunun yerine glob kullanıyor. Bu, var olan bir dosyaya sahip olma konusunu ele alır, ancak izinler okunmasını engeller. Bu tür durumları algılamak isterseniz, aşağıdakiler çalışacaktır:

:if !empty(glob("path/to/file")) 
: echo "File exists." 
:endif 
+3

SpecificFile varsa, ancak geçerli kullanıcı için okunamazsa. Belki de findfile daha iyidir. – ppan

+0

"Dosyalanabilir" desteği, okunabilirliği umursamıyorsanız, küreyi kullanabileceğinizi belirtir. –

+3

eğer filereadable (genişletin ("~/.vim/bundle/vundle/README.md")) let g: hasVundle = 1 endif – metaphy

34

yorumların bazıları ekspres endişeleri hakkında:

:function! SomeCheck() 
: if findfile("SpecificFile", ".") == "SpecificFile" 
:  echo "SpecificFile exists" 
: endif 
:endfunction 
+0

“E116: İşlev için geçersiz argümanlar” alıyorum. Eklentiyi kontrol etmek için dosyayı ana dizine göre nasıl belirlersiniz? (Ayrıca bakınız [here] (http://stackoverflow.com/a/30444477/3596168)) – Scz

+0

Kullanıcı giriş dizini hakkında mı konuşuyorsunuz? Sanırım sadece bir "~", ama olumlu değilim. Bu hatayı aldığınızda hangi argümanları sağladınız? – brianmearns

+1

Bunu '~ 'ile denedim ve bu hatayı verdi. Şimdi tekrar denedim ve çalışır ... :-) – Scz