मैं कैसे बताऊँ विम कुछ फ़ाइल एक्सटेंशन पर्यायवाची हैं?


21

मैं .cppफ़ाइलों में C ++ कोड संपादित करता हूं , जबकि टेम्पलेट कोड .tccफ़ाइलों में जाता है । जब मैं ऐसी फाइल खोलता हूं, तो कोई सिंटैक्स हाइलाइटिंग उपलब्ध नहीं है। मैंने set syntax=cppआ tpp.vimफाइल में कोशिश की ~/.vim/ftplugin/, लेकिन यह कुछ नहीं करता है, जबकि संपादक में यह काम करता है। क्या विशिष्ट एक्सटेंशन को दूसरों के साथ पर्याय मानने का कोई तरीका है?

जवाबों:


19

पसंदीदा तरीका एक बनाना है ~/.vim/filetype.vim, जैसा कि Vim FAQ 26.8:help 43.2 में वर्णित और समझाया गया है :

उपरोक्त दृष्टिकोण का एक बेहतर विकल्प ~ / .vim निर्देशिका में (या 'रनटाइमपथ विकल्प में निर्दिष्ट निर्देशिकाओं में से एक) में filetype.vim फ़ाइल बनाना और निम्नलिखित पंक्तियों को जोड़ना है:

" my filetype file
if exists("did_load_filetypes")
    finish
endif
augroup filetypedetect
    au! BufRead,BufNewFile *.x       setfiletype c
augroup END

संपादित करें:

did_load_filetypesआप किसी भी समस्या का कारण नहीं होना चाहिए; इसे बदलने के बाद केवल Vim पुनरारंभ की आवश्यकता होगी।

इस फ़ाइल के कई और अनावश्यक लोडिंग से बचने के लिए यह आवश्यक है, और इसे बेस फ़ाइल ($ VIMRUNTIME / filetype.vim) से विरासत में मिला है:

" Vim support file to detect file types
"
" Maintainer:   Bram Moolenaar <Bram@vim.org>
" Last Change:  2014 Jun 12

" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
  finish
endif
let did_load_filetypes = 1

अधिक जानकारी के लिए जाँच करें :help new-filetype।


ifबयान क्यों ? अगर मैं इसे छोड़ता हूं, तो मेरे लिए ऑटोकैड निष्पादित नहीं किया जाता है।
— oarfish

@oarfish भले ही आप विम को पुनरारंभ करें?
— mMontu 15

ठीक है, यह अजीब है। मुझे au!समूह में, au! BufRead,BufNewFile *.py setfiletype pythonऔर नीचे पंक्ति में कथन देना है au! BufRead,BufNewFile *.tpp setfiletype cpp। लेकिन वास्तव में केवल दूसरा ही काम करता है। .pyफ़ाइलों का संपादन फ़ाइल प्रकार पर सेट नहीं होता है python। मैं वास्तव में विम-गुरु नहीं हूं इसलिए मुझे कुछ याद आ रहा है।
— oarfish

@oarfish यदि आप संपादित की गई फ़ाइल का उल्लेख करते हैं, तो आप पाएंगे कि इसमें पहले से ही एक पंक्ति है au BufNewFile,BufRead *.py,*.pyw setf python, इसलिए आपकी पहली पंक्ति अप्रासंगिक है। आपकी समस्या शायद अन्यत्र है।
— mMontu

"Editing .py files does not set the file type to python"- :set ftउस केस का आउटपुट क्या है ? यदि यह अजगर नहीं है, तो Vim-FAQ 2.5
— mMontu

14

आप कर सकते हैं (अपने वैश्विक में .vimrc):

autocmd BufEnter *.tpp :setlocal filetype=cpp

autocmd BufEnter *.cuf :setlocal filetype=fortranCUDA फोरट्रान फ़ाइलों को फोरट्रान के रूप में
— मानने के लिए

1

एक भी हो सकता है: au BufRead,BufNewFile *.tpp setlocal filetype=cppअपने में .vimrcऐसी है कि के साथ एक फ़ाइल खोलने पर .tppविस्तार, फ़ाइल प्रकार के लिए निर्धारित है सी ++


1
यह मूल रूप से @ edi9999 के उत्तर के समान प्रतीत होता है। क्या आप BufRead,BufNewFileइसके बजाय उपयोग करने के बारे में विस्तार से बता सकते हैं BufEnter?
— oarfish

@oarfish यह बहुत ज्यादा मायने नहीं रखता है, लेकिन मुझे लगता है कि मैं डॉक्स में BufRead,BufNewFileआगे रहना पसंद करता हूं BufEnter( :help BufEnter) इसमें कहा गया है: "BufEnter: .... इसे तब भी क्रियान्वित किया जाता है जब BufReadPost ऑटोकॉमैंड्स के बाद बफर को संपादित करना शुरू किया जाता है।" जहां BufReadPost पर्याय बन गया है BufRead । इसके अलावा, मुझे विश्वास नहीं है कि :इससे पहले setlocalकि मैं भी अपने जवाब में छोड़ दिया है की आवश्यकता है । (मैंने आगे की चर्चा को सुनकर इसे पूरी तरह से गलत समझा, खुश हो सकता है)
— लम्बेमर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.