2010-06-23 14 views
76

मैं vimscript में एक फ़ंक्शन में वर्तमान निर्देशिका में मौजूद फ़ाइल को जांचने के लिए एक सुरुचिपूर्ण तरीका ढूंढ रहा हूं।विस्क्रिप्ट: विशिष्ट फ़ाइल मौजूद है या नहीं,

मैं इसके साथ आया लेकिन यह सुनिश्चित नहीं है कि यह सबसे सुरुचिपूर्ण समाधान है (यदि यह मौजूद है तो मैं विम विकल्प सेट करूँगा) - क्या फ़ाइल नाम की एक और तुलना करने का कोई तरीका नहीं है - शायद vim का उपयोग करें में निर्मित समारोह (?):

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

उत्तर

107

मैं इस पाया है vim man में खोज का एक सा है, जो ज्यादा बेहतर लग रहा है इसके साथ ही मूल:

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

यदि विशिष्ट फ़ाइल मौजूद है, तो वर्तमान उपयोगकर्ता के लिए पठनीय नहीं है। शायद findfile बेहतर है। – ppan

+0

'फाइलreadable' उल्लेख के लिए सहायता यदि आप पठनीयता की परवाह नहीं करते हैं तो आप 'ग्लोब' का उपयोग कर सकते हैं। –

+3

अगर फ़ाइलreadable (विस्तृत करें ("~/.vim/bundle/vundle/README.md")) जी दें: हैसंडल = 1 एंडिफ़ – metaphy

34

टिप्पणियों में से कुछ के बारे में चिंता व्यक्त filereadable और इसके बजाय glob का उपयोग कर। यह मौजूद फाइल रखने के मुद्दे को संबोधित करता है, लेकिन अनुमतियां इसे पढ़ने से रोकती हैं। यदि आप ऐसे मामलों का पता लगाना चाहते हैं, तो निम्नलिखित कार्य करेंगे:

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

मुझे 'E116: फ़ंक्शन के लिए अमान्य तर्क' मिलते हैं। प्लगइन की जांच करने के लिए आप होम निर्देशिका से संबंधित फ़ाइल को कैसे निर्दिष्ट करते हैं? (यह भी देखें [यहां] (http://stackoverflow.com/a/30444477/3596168)) – Scz

+0

क्या आप उपयोगकर्ता होम निर्देशिका के बारे में बात कर रहे हैं? मैं बस एक '~' अनुमान लगाऊंगा, लेकिन मैं सकारात्मक नहीं हूं। आपको उस त्रुटि के दौरान क्या तर्क दिया गया था? – brianmearns

+1

मैंने इसे '~' के साथ करने की कोशिश की, और उसने यह त्रुटि दी। अब मैंने फिर कोशिश की और यह काम करता है ... :-) – Scz

संबंधित मुद्दे