2011-04-12 14 views
18

के लिए पूर्ण मैं प्लगइन को clang_complete.vim की नकल की, लेकिन जब मैं कुछ चर के बाद . टाइप किया है, यह कहते हैं:बजना विम

पैटर्न

मैं इस मुद्दे की खोज नहीं मिला है, और किसी ने कहा मैं चाहिए g:clang_complete_auto: और g:clang_complete_copen: कॉन्फ़िगर करें। मैं यह कैसे कर सकता हूँ?

+1

संबंधित: http://stackoverflow.com/q/1115876/1968 –

+8

संपादकों पर प्रश्न कब से संबंधित हैं? – UncleZeiv

उत्तर

11

एक नमूना फ़ाइल खोलने का प्रयास करें

vim /tmp/sample.cpp 

और कुछ सीपीपी कोड दर्ज

#include <iostream> 

int main() { 
    std:: // <-- this should complete 
} 

ध्यान दें कि आप वास्तव में के बाद से पूरा होने संकलक साथ किया जाता है, शीर्ष लेख शामिल करने की जरूरत है। यदि यह काम करता है, लेकिन आपकी प्रोजेक्ट अभी भी "पैटर्न नहीं मिला" कहती रहती है तो क्लैंग ++ शायद आपकी प्रोजेक्ट को संकलित करने में सक्षम नहीं है। जब आप अपना कोड संकलित करते हैं तो क्या आप -I स्विच का उपयोग करते हैं? उन्हें अपनी प्रोजेक्ट निर्देशिका में .clang_complete नाम की फ़ाइल में जोड़ें।

मेरे लिए यह मेरा .vim/plugin फ़ोल्डर केवल clang_complete.vim फ़ाइल डाउनलोड के लिए उपलब्ध है युक्त साथ ठीक काम करता है:

$ find .vim 
.vim 
.vim/plugin 
.vim/plugin/clang_complete.vim 

... लेकिन इस मुद्दे को रिपोर्ट https://github.com/Rip-Rip/clang_complete/issues/39 में यह सुझाव दिया है कि आप उस से भी अधिक की आवश्यकता हो सकती फ़ाइल (अतिरिक्त फाइलें गिट रेपो में हैं)।

0

विम कॉन्फ़िगर करते हैं, आप को खोजने चाहिए या अपने .vimrc फ़ाइल बनाने के लिए:

$ vim ~/.vimrc

तब दर्ज करें:

let g:clang_complete_copen = 1 
+0

यह अभी भी काम नहीं करता है। क्लैंग कोड संकलित करने के लिए ठीक काम करता है। – dalibocai

+0

@ दालिबोकाई क्या आप सिर्फ एक फ़ाइल की एक छोटी परियोजना के साथ परीक्षण कर सकते हैं? क्या आपको अन्य प्लगइन मिल गए हैं? – etaty

+0

मैं इसे std :: स्ट्रिंग पर परीक्षण करता हूं, और यह काम नहीं करता है। मैंने पहले से ही सभी omni समापन फ़ाइलों को हटा दिया है। मैंने क्लैंग ++ का परीक्षण किया, यह अच्छी तरह से काम करता है। – dalibocai

1

क्या आपने कमांड लाइन पर क्लेंग को स्पष्ट रूप से आमंत्रित करके, विम के बाहर कोड को संकलित करने का प्रयास किया था?

मुझे अपने कोड के साथ एक ही समस्या थी, लेकिन यह पता चला कि क्लांग एमपीआई पुस्तकालयों (mpich2) के उपयोग के कारण मेरे कोड को संकलित करने में सक्षम नहीं था। हो सकता है कि एक समान समस्या क्लैंग को आपके मामले में विफल कर दे?

#include <iostream> 
#include <string> 

int main() { 
    std::string myString("test string"); 
    std::cout << myString.size() << std::endl; // After typing the dot, I get a list of std::string methods 
} 

तक-तरह, मैं अभी भी clang_complete मेरी एमपीआई कोड में याद आती है: मेरे मामले में, अगर मैं एमपीआई-निर्भरताएं निकालें, सब कुछ ठीक तरह कुछ में काम करता है, उदाहरण के लिए। क्या किसी के लिए इसका समाधान मिला?

26

मुझे एक ही समस्या थी और इसे मेरे द्वारा निम्नलिखित जोड़कर हल किया गया।vimrc

let g:clang_user_options='|| exit 0' 
+2

अतिरिक्त संदर्भ के लिए देखें: https://github.com/Rip-Rip/clang_complete/issues/10 – Cepheid

+1

यह निश्चित रूप से वोट-अप का हकदार है। – zeboidlund

+0

+1 ऐ - इससे मुझे भी मदद मिली – kfmfe04

4

निम्नलिखित the Clang build instructions का उपयोग कर clang version 3.0 (tags/RELEASE_30/final) का उपयोग कर Cygwin पर मेरे लिए काम है, साथ ही विंडोज पर बातें हो गया और एक संस्करण (, आम तौर पर स्थिर के रूप में मैं पढ़ा है) ट्रंक से बाहर की जाँच की कल (clang version 3.1 (trunk 154056)) और निर्मित विजुअल स्टूडियो 2010 के साथ:

" clang_complete 
let g:clang_complete_auto = 0 
let g:clang_complete_copen = 1 
" :h clang_complete-auto_user_options 
if has('win32unix') " Cygwin 
     " Using libclang requires a Vim built with +python 
     let g:clang_use_library = 1 
     " Mit der Option "gcc" kriege ich Fehler. 
     " Remove "gcc" option as it causes errors. 
     let g:clang_auto_user_options='path, .clang_complete' 
elseif has('win32') " Windows 
     let g:clang_auto_user_options='path, .clang_complete' 
     let g:clang_use_library = 1 
     let g:clang_library_path='D:\Sourcen\LLVM\build\bin\Debug' 
endif 

नोट Windows संस्करण छिटपुट अभिकथन विफलताओं है, लेकिन ठीक काम करता है हो सकता है कि, हालांकि वास्तव में Cygwin संस्करण की तरह नहीं। मान लीजिए कि एमएसवीसी बनाम जीसीसी हेडर फाइलों का उपयोग करना है।

सिग्विन संस्करण में प्रारंभिक error: release unlocked lock है, लेकिन यह परवाह किए बिना काम करता है।