मैं कैसे बताऊं कि किस सिंटैक्स फ़ाइल का उपयोग किया जा रहा है?


50

विम एक अजीब तरीके से मेरी फ़ाइल को हाइलाइट कर रहा है, और मैं यह जानना चाहता हूं कि इस व्यवहार के लिए सिंटैक्स फ़ाइल क्या जिम्मेदार है। मुझे कैसे पता चलेगा कि सिंटैक्स फाइल्स ने क्या लोड किया है?

जवाबों:


39

यह पता लगाने के लिए कि विम ने कौन सी फाइलें वास्तव में लोड की हैं, निष्पादित करें

:scriptnames

यह उपयोगी है। अब, यहां कुछ ऐसा है जिसके बारे में मुझे यकीन नहीं है: यदि इस सूची में एक सिंटैक्स फ़ाइल दिखाई देती है, तो क्या यह गारंटी है कि सिंटैक्स फ़ाइल "सक्रिय" है? मैं यहाँ कुछ वाक्यविन्यास फ़ाइलें देख सकता हूँ।
एडवर्ड जेड यांग

7
आम तौर पर, केवल सूचीबद्ध अंतिम "सक्रिय" होता है, और यहां तक ​​कि यह भी नहीं हो सकता है कि आपने सिंटैक्स हाइलाइटिंग बंद कर दिया है। वर्तमान में सिंटैक्स को प्रभावी रूप से देखने के लिए, निष्पादित करें :echo b:current_syntax। वर्तमान में प्रभावित सिंटैक्स आइटम देखने के लिए, जैसा कि Ingo ने सुझाया है और निष्पादित करें :syntax list। यदि Ingo नोट किया गया हो तो सिंटैक्स आइटम एक से अधिक सिंटैक्स फ़ाइल से प्रभावी हो सकते हैं।
गैरीजोन

1
Mac OS XI पर संशोधित किया गया /usr/share/vim/vim73/filetype.vim। उपरोक्त आदेश का उपयोग करने के बाद मुझे एहसास हुआ कि यह MacVim के संस्करण का उपयोग कर रहा था ~/Applications/MacVim.app/Contents/Resources/vim/runtime/filetype.vim। यदि आपके पास MacVim स्थापित है, तो सुनिश्चित करें कि आपने सही फ़ाइल को संशोधित किया है।
ईचैब

1
आपके पास दो सिंटैक्स फ़ाइलें लोड हो सकती हैं जिनका समान नाम है। उदाहरण के लिए, कोल्डफ़्यूज़न के लिए सिंटैक्स हाइलाइटिंग वाले विम जहाज, ( /usr/share/vim/vim81/syntax/cf.vimमेरे लिए)। मैंने एक कस्टम cf.vim स्थापित किया क्योंकि मानक एक दिनांकित है। :scriptnamesदोनों फाइलों को दिखाता है। स्क्रिप्ट सूची में डिफ़ॉल्ट कम है; हालाँकि, पूर्व का उपयोग किया जा रहा है। अगर तुम देखो /usr/share/vim/vim81/syntax/cf.vim, एक गार्ड है if exists("b:current_syntax") finish endif। इसलिए, मेरे मामले में, scriptnamesमददगार था, लेकिन मुझे थोड़ा गहरा खुदाई करना पड़ा।
awjidah

31

वर्तमान बफ़र के लिए सिंटैक्स के माध्यम से क्वेरी की जा सकती है

:setlocal syntax?

यह आमतौर पर (लेकिन जरूरी नहीं) बफ़र के फ़िलाटाइप ( :setlocal filetype?) से मेल खाती है ।

एक गहरी नज़र के लिए,

:syntax list

सभी वाक्यविन्यास परिभाषाओं को दर्शाता है (कुछ वाक्यविन्यास में अन्य भाषा के वाक्यविन्यास शामिल हो सकते हैं, उदाहरण javaके htmlलिए JavaDoc टिप्पणी अंकन के लिए है)।


यह वही है जो मैं ओपी के प्रश्न के शीर्षक के आधार पर ढूंढ रहा था। ओपी निश्चित रूप से उस विवरण में स्पष्ट करता है जिसे वह वास्तविक वाक्यविन्यास फ़ाइल की तलाश में है, लेकिन मैं आपको इसे छोड़ने की सराहना करता हूं क्योंकि यह खोज इंजन में पहले उत्तरों में से एक है।
क्रिया

4

आप देख सकते हैं कि फ़िल्टाइप (s) वर्तमान में और किसके द्वारा उपयोग किया जाता है

:verbose set ft ?

फिलाटाइप को संभालने वाला प्लगइन सबसे अधिक संभावना है

:e $VIMRUNTIME\ftplugin
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.