2013-08-03 8 views
10

मुझे लगता है कि मेरे पास वीम का उपयोग करके सी ++ प्रोग्रामिंग के लिए एक शानदार सेटअप है लेकिन मुझे हेमर्स की खोज करने के लिए विम, वाईसीएम और सिंटेस्टिक को बताने का कोई तरीका नहीं मिल रहा है। जब भी यह जानकारी मेकफ़ाइल में मौजूद होती है, तो जब भी मैं किसी प्रोजेक्ट पर काम करना चाहता हूं, तो वीम, वाईसीएम और सिंटेस्टिक के लिए पथ चर शामिल करने के लिए वास्तव में परेशान होना होगा। क्या वैश्विक शामिल पथ स्थापित करने के लिए कोई स्वचालित समाधान है?विम, सी ++, वाईसीएम, और सिंटेस्टिक में पथ की समस्याएं शामिल हैं

संपादित करें: अगर मैं इस तरह के पथ को सेट करता हूं तो यह हेडर भी नहीं ढूंढ पाएगा: "सेट पथ ="।,/Usr/include, include, ../include,/home/steven/ovgl/include, , "

+0

मुझे लगता है कि आप एक मेकफ़ाइल लक्ष्य बना सकते हैं जो मेकफ़ाइल चर से वाईसीएम कॉन्फ़िगरेशन उत्पन्न करेगा ... कभी इसका परीक्षण नहीं किया गया, लेकिन एक साधारण स्क्रिप्ट चाल चल सकती है। फिर प्रत्येक नई परियोजना के लिए आप मेकफ़ाइल में उस लक्ष्य को शामिल करेंगे, 'ycm_setup' बनाएं और आप कोड के लिए तैयार होंगे। –

+2

यह अच्छा होगा अगर आपने प्लगइन के लिंक पोस्ट किए हों, या कम से कम इसके पूर्ण नाम ([YCM के बजाय YouCompleteMe] (https://github.com/Valloric/YouCompleteMe))। – mMontu

उत्तर

3

आपके शीर्षलेख आपकी टैग फ़ाइलों में दिखने चाहिए (:h tags देखें यदि आप इसके बारे में नहीं जानते हैं)।

फिर YouCompleteMe, टैग फ़ाइल से अपने हेडर के बारे में जानकारी को पढ़ने में सक्षम है के रूप में plugin faq में विस्तार से बताया:

YCM मेरे टैग से पहचानकर्ता नहीं पढ़ता फ़ाइलें

पहले , अपने vimrc में let g:ycm_collect_identifiers_from_tags_files = 1 डालें।

सुनिश्चित करें कि आप के बाद से अपनी टैग फ़ाइलों का उत्पादन करने के लिए एक्सबेरेंट सीटीएजी का उपयोग कर रहे हैं, केवल समर्थित टैग प्रारूप एक्सबेरेंट सीटीएजी प्रारूप है। "सादा" ctags से प्रारूप समर्थित नहीं है। Ctags --version का आउटपुट सूची "एक्सबेरेंट सीटैग" होना चाहिए।

ctags --fields=+l क्योंकि YCM टैग उत्पादन में language:<lang> क्षेत्र की जरूरत है विकल्प (है कि एक लोअरकेस एल, नहीं एक एक है) के साथ कहा जाता है की जरूरत है।

नोट: मैक ओएस एक्स डिफ़ॉल्ट रूप से स्थापित "सादा" ctags के साथ आता है। ब्रू इंस्टॉल सीटीएजी आपको एक्सबेरेंट सीटीएजी संस्करण मिलेगा।

यह भी सुनिश्चित करें कि आपका वीम टैग विकल्प सही ढंग से सेट हो। विवरण के लिए :h 'tags' देखें। यदि आप देखना चाहते हैं कि कौन सी टैग फाइलें YCM किसी दिए गए बफर के लिए पढ़ेगी, प्रासंगिक बफर सक्रिय के साथ :echo tagfiles() चलाएं। ध्यान दें कि वह फ़ंक्शन केवल टैग फ़ाइलों को सूचीबद्ध करेगा जो पहले से मौजूद हैं।

+0

मैंने चर को अपने vimrc में जोड़ा तो मैंने "ctags -R * --fields = + l" और "etags -R * --fields = + l" दोनों की कोशिश की लेकिन वाईसीएम टैग के साथ कुछ भी नहीं कर रहा है। – SteveDeFacto

+0

सुनिश्चित करें कि आप एक्सबेरेंट सीटैग का उपयोग कर रहे हैं। उत्तर के अंतिम पैराग्राफ पर ध्यान दिए अनुसार आप अपने 'टैग' विकल्प की सेटिंग भी देख सकते हैं। वाईसीएम को 'टैग' की सामग्री पर विचार करना चाहिए, जैसा कि इसके एफएक्यू पर बताया गया है; अगर आपको लगता है कि यह नहीं है, तो आपको [प्लगइन पर कोई समस्या खोलनी चाहिए] (https://github.com/Valloric/YouCompleteMe/issues) – mMontu

+1

मुझे वास्तव में समझ में नहीं आता कि यह क्यों काम नहीं कर रहा है और इसलिए मैं नहीं करूँगा अगर मैं एक खोलता हूं तो इस मुद्दे को समझाने में सक्षम हो। मैं वाईसीएम को सही काम करने के लिए हफ्तों तक कोशिश कर रहा हूं, इसलिए मैं वापस clang_complete और supertab पर वापस चला गया। sigh ... – SteveDeFacto

1

मुझे एक समान समस्या का सामना करना पड़ा था। मुझे llvm का उपयोग करके विकास के साथ उपयोग के लिए इसकी आवश्यकता थी। अपनी परियोजना/कोड बेस में

  1. Ctags -R --fields=+l *: मैं नीचे दिए गए चरणों का पालन करके इसे हल किया।
  2. अपने उपयोगकर्ता .vimrc फ़ाइल में जोड़ने let g:ycm_collect_identifiers_from_tags_files = 1
  3. cp ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py ~/
  4. .vimrc let g:ycm_global_ycm_extra_conf = '/home/<user>/ycm_extra_conf.py'
  5. रीसेट टर्मिनल में एक और लाइन जोड़ें या मारा bash

ध्यान दें: आप के साथ निर्देशिका में vim शुरू कर देना चाहिए इसमें मौजूद टैग। या आपको उस निर्देशिका को स्पष्ट रूप से निर्दिष्ट करने की आवश्यकता हो सकती है जहां टैग मौजूद हैं।

+1

वाईसीएम मैनुअल स्पष्ट रूप से बताता है कि आपको कॉन्फ़िगरेशन फ़ाइल बदलनी चाहिए और न केवल प्रदान किए गए उदाहरण का उपयोग करना चाहिए। –

0

आपने YCM-Generator के लिए देखा है। यह एक ऐसी स्क्रिप्ट है जो make चलाकर ycm_extra_conf.py उत्पन्न करती है और उपयोग किए गए सभी झंडे की तलाश करती है। आप प्रोजेक्ट के लिए इसे एक बार चलाते हैं, और फ़ाइल को बदलते समय केवल फिर से चालू करते हैं।

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