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


21

मैं .cppफ़ाइलों में C ++ कोड संपादित करता हूं , जबकि टेम्पलेट कोड .tccफ़ाइलों में जाता है । जब मैं ऐसी फाइल खोलता हूं, तो कोई सिंटैक्स हाइलाइटिंग उपलब्ध नहीं है। मैंने set syntax=cpptpp.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.