2012-01-17 14 views
33

कभी-कभी मैं बिना किसी फ़ाइल नाम एक्सटेंशन के स्क्रिप्ट लिखता हूं। उदाहरण के लिए:शीमांग लाइन से Vim फ़ाइल प्रकार का पता लगाने के लिए कैसे?

#!/usr/bin/env node 

console.log('hello world!'); 

मुझे आशा है कि विम कुटिया लाइन से फ़ाइल प्रकार का पता लगा सकते हैं (उदा #!/usr/bin/env nodejavascript है)। मुझे filetype.vim में क्या रखा जाना चाहिए?

+6

क्यों दूसरी या आखिरी पंक्ति मॉडलिन '# vim: ft = javascript' जोड़ें नहीं, क्योंकि विम पहले से ही पहिया को पुनर्निर्मित करने के बजाय मॉडलिन के लिए जांचता है? –

+13

@SwaroopCH किसी भी [असली संपादक] (http://www.gnu.org/software/emacs/) जैसी आवश्यक जानकारी वाले फ़ाइल में पहले से मौजूद किसी पंक्ति से जानकारी का विश्लेषण क्यों नहीं किया गया है, इसके बजाय वर्षों से किया गया है इसे एक संपादक विशिष्ट फैशन में अनावश्यक रूप से दोहराना जो अन्य संपादकों के उपयोगकर्ताओं के लिए फ़ाइल को जोड़ता है? */मुझे डॉन ज्वाला सूट * –

उत्तर

27
:help new-filetype-scripts में सूचीबद्ध निर्देशों का पालन

, ( यूनिक्स सिस्टम पर ~/.vim) उपयोगकर्ता क्रम निर्देशिका में scripts.vim फ़ाइल बनाने, और उस में निम्न स्क्रिप्ट लिखते हैं।

if did_filetype() 
    finish 
endif 
if getline(1) =~# '^#!.*/bin/env\s\+node\>' 
    setfiletype javascript 
endif 
+3

संपूर्ण ': नई-फ़ाइल प्रकार' अनुभाग भी देखें जो पढ़ने योग्य है। –

+0

आगे की धड़कन क्यों नहीं निकलती है? /बिन/एनवी –

+1

@ लाईयू-ह्यूआन: एक आगे स्लैश चरित्र विम नियमित अभिव्यक्ति के वाक्यविन्यास के अनुसार एक विशेष प्रतीक नहीं है। यह निश्चित रूप से '\/'के रूप में बच निकला जा सकता है, लेकिन यह केवल पैटर्न के लिए जरूरी है जो आगे की खोज कमांड ('/') में या प्रतिस्थापन कमांड (': s') में उपयोग किए जाते हैं जब पैटर्न डिलीमीटर स्लैश होते हैं। –

10

इस सामग्री

fun! s:DetectNode() 
    if getline(1) == '#!/usr/bin/env node' 
     set ft=javascript 
    endif 
endfun 

autocmd BufNewFile,BufRead * call s:DetectNode() 
+5

असल में, "ft = जावास्क्रिप्ट" काम करने की अधिक संभावना है। अधिकांश लोगों के पास "जावास्क्रिप्ट" परिभाषित किया गया है और "नोड" परिभाषित नहीं किया गया है। –

0

पार्टी के लिए देर से एक छोटी सी, लेकिन Node.vim हैंडल आप के लिए जैसे JavaScript फ़ाइलें का पता लगाने के साथ इस फ़ाइल ~/.vim/ftdetect/node.vim पैदा करते हैं। और फिर कुछ। :-)