2013-03-15 5 views
6

मुझे ctags, jsctags, और टैगबार स्थापित करने में सहायता चाहिए, इसलिए मेरे पास एक व्यावहारिक जावास्क्रिप्ट संपादन envrionment हो सकता है। मुझे सबकुछ इंस्टॉल हो गया लेकिन मुझे पता नहीं चला कि ctags और jsctags एक साथ कैसे काम करते हैं, इसलिए मुझे नहीं पता कि ठीक से कॉन्फ़िगर कैसे करें। मैंने Google के आसपास काफी कुछ किया है लेकिन जानकारी बहुत टूटी हुई है और स्थिरता की कमी है। मुझे इस पोस्ट के समान त्रुटि मिली, ctags and tagbar configuration are out of sync। मैं ओएस एक्स पहाड़ शेर और iterm2 पर हूँ।ctags, jsctags/doctorjs, टैगबार चरण

किसी भी मदद की सराहना की जाएगी। एक कदम दर कदम निर्देश उत्कृष्ट होगा।

Thx।

उत्तर

5

सबसे पहले, आपको यह समझना होगा कि jsctags और ctags शायद कभी सिंक हो जाएंगे। यहां तक ​​कि यदि आपके पास केवल एक साधारण कार्य है, तो दोनों प्रोग्राम थोड़ा अलग सूचनाएं आउटपुट कर सकते हैं। इस प्रकार यह सलाह दी जाती है कि एक या दूसरे का उपयोग करें, लेकिन दोनों नहीं।

दूसरा, AFAIK, टैगबार को ctags के बजाय jsctags का उपयोग करने के लिए कॉन्फ़िगर करने की आवश्यकता नहीं है। यदि आप जावास्क्रिप्ट कर रहे हैं तो यह उपलब्ध होने पर बस jsctags के लिए डिफ़ॉल्ट होगा। अगर आपके पास काम कर रहे jsctags हैं तो टैगबार को शिकायत नहीं करनी चाहिए।

तीसरा, अपने स्वयं के टैग से संबंधित कार्य (:tag, :tselect, <C-]>, आदि) के लिए, विम केवल एक या अधिक शारीरिक tags फ़ाइलों की उपस्थिति पर निर्भर करता है। चाहे उन फ़ाइलों को ctags, jsctags या whatevertags द्वारा उत्पन्न किया गया हो, तब तक कोई चिंता नहीं है जब तक वे सही ढंग से उत्पन्न नहीं होते हैं।

और अब हम चौथे बिंदु पर पहुंचते हैं जहां दर्द वास्तव में है: न तो टैगबार और न ही इसके पुराने चचेरे भाई टैगलिस्ट वास्तव में एक भौतिक tags फ़ाइल का उपयोग करते हैं। वे मौजूदा tags फ़ाइल का उपयोग करने या अपडेट करने की कोशिश किए बिना सीधे ctags या jsctags टैप करते हैं। इसके कारण, और तथ्य यह है कि टैगबार केवल वर्तमान बफर से संबंधित है, आपकी खुद की भौतिक tags फ़ाइल (और इस प्रकार विम की टैग-संबंधित कार्यक्षमताओं) और टैगबार लगभग सिंक से बाहर होने की गारंटी है। भले ही आप एक ही इंडेक्सर का उपयोग करें।

  • को TagBar उपयोग:

    तो ... मैं तुम्हें या तो ctags या jsctags का उपयोग करें और TagBar की और विम के टैग से संबंधित सामान समन्वयित करने के बारे में कुछ भी भूल जाते हैं के रूप में दोनों बातें बिल्कुल अलग होती हैं सलाह देंगे अपने वर्तमान बफर में समझें/नेविगेट करें।

  • अपनी परियोजना के चारों ओर स्थानांतरित करने के लिए विम की टैग-संबंधित कार्यक्षमताओं का उपयोग करें।


रैंडम विचार ...

  • विम के लिए अपने tags फ़ाइल (फ़ाइलें) का पता लगाने में आसानी से, आप अपने ~/.vimrc में इस लाइन रखना चाहिए:

    set tags=./tags,tags;/ 
    

    ./tags साधन "वर्तमान फ़ाइल की निर्देशिका में tags फ़ाइल की तलाश करें", tags का अर्थ है "काम करने वाली निर्देशिका में tags फ़ाइल की तलाश करें", ;/ का अर्थ है "जब तक आप / तक नहीं पहुंच जाते, तब तक ऊपर और ऊपर रहें"।

  • The TagBar wiki jsctags में एक बग के बारे में बात करते हैं, सुनिश्चित करें कि आप इससे चिंतित नहीं हैं।

  • jsctags ctags से बेहतर है जब आप पागल "आधुनिक" जावास्क्रिप्ट को बहुत सारे कॉलबैक और स्वयं निष्पादन कार्यों के साथ लिखते हैं। यदि आपकी जावास्क्रिप्ट अधिक पारंपरिक है, तो ctags पर्याप्त हो सकता है।

+0

रोमैनल, स्पष्टीकरण के लिए धन्यवाद। मुझे लगता है कि मुझे jsctags काम कर रहा है लेकिन टैगबार ने केवल ब्रेकडाउन/पदानुक्रम के बिना वैरिएबल, विधियों, बंद आदि को दिखाया है, जैसे ऑब्जेक्ट पेड़, या बाहरी पुस्तकालयों से सामानों का संदर्भ देना (आवश्यकता (..))। क्या यह वही तरीका है? शायद सीटीएजी बेहतर काम कर सकते हैं? सबसे बड़ा मूल्य एक चर पर कर्सर को सक्षम करने और स्रोत फ़ाइल पर जाने में सक्षम होगा जो इसे परिभाषित करता है। मुझे उम्मीद है कि मैं समझ में आता हूं। – 1001b

+0

आपको एक स्कोप्ड पदानुक्रमित दृश्य माना जाता है। Jsctags को ctags की तुलना में स्कोपिंग पर बेहतर काम करना चाहिए ताकि आप टैगबार विकी में वर्णित jsctags में उस बग की तरह ध्वनि का वर्णन कर सकें। आपको अधिक ध्यान केंद्रित सहायता के लिए गिथब पर इश्यू ट्रैकर आज़माएं, मुझे डर है। यदि आपके पास एक अद्यतित 'टैग' फ़ाइल है, तो' 'पर क्लिक करके एक चर पर कर्सर को आपको परिभाषा पर ले जाना चाहिए। अधिक जेएस-फ्रेंडली कमांड के लिए [यह] (https://github.com/romainl/dotvim/blob/master/vimrc#L174) देखें। – romainl

+0

फिर से Thx। रीमेप लाइन बहुत उपयोगी है। आप आमतौर पर अपनी टैग फ़ाइल को व्यवस्थित कैसे करते हैं (या आप jsctags कमांड को कैसे कॉल करते हैं)? जेएस में निर्भरता संरचना की संकलित प्रकृति चीजों को कम सहज बनाती है। उदाहरण के लिए, कोर मॉड्यूल नोड में बैठे हैं लेकिन परियोजना फाइलें अलग-अलग रास्ते में हैं ... बीटीडब्ल्यू, टैग का दायरा मेरे साथ होता है ... विकी के मुताबिक प्रस्तावित फिक्स काम करने योग्य नहीं है क्योंकि इसकी आवश्यकता है node.js डाउनग्रेड करें! कोई अन्य कामकाज? फिर से Thx। – 1001b

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