विम से संकलन कोड


18

नया vimऔर मैं vimएक नया टर्मिनल चलाने और संकलक को कॉल किए बिना कोड को संकलित करने में सक्षम होना चाहता हूं ।

मैं यह कार्य कैसे करूं? ध्यान दें कि यह आवश्यकता gccकेवल तक ही सीमित नहीं है , मुझे कभी-कभी pythonउस वर्तमान स्क्रिप्ट पर भी कॉल करने की आवश्यकता होती है जिस पर मैं काम कर रहा हूं, इसलिए आपको यह विचार मिलता है ...

जवाबों:


25

एक लिखें Makefile, तो आप बस कर सकते हैं:

:make

अंदर से विम और अगर संकलन विफल रहता है:

:copen

आपको चेतावनी और त्रुटियां दिखाएगा। उनका चयन करना आपको उचित फ़ाइल और लाइन में ले जाएगा।



6

अगर आपको किसी कारणवश मेकफाइल्स पसंद नहीं हैं, तो आप किसी भी कमांड को कॉल कर सकते हैं:!

उदाहरण के लिए आप एक सरल जावा प्रोग्राम को संकलित करने और चलाने के लिए ":! Javac * .java && java Foo" का उपयोग कर सकते हैं। आप अन्य बिल्ड सिस्टम (scons, cmake, ...) को भी इस तरह से कॉल कर सकते हैं।


3

विम के लिए Quickrun प्लगइन का प्रयास करें । पेज में जीथब का लिंक शामिल है, जो नवीनतम संस्करण है और जो मैं उपयोग करता हूं।

इस प्लगइन का उपयोग करने के लिए विरोध के रूप में लाभ :!, कमांड से आउटपुट एकत्र किया जाएगा और एक विभाजित विंडो में दिखाया जाएगा।

इसके अलावा, डिफ़ॉल्ट रूप से वह प्लगइन आपके विम उदाहरण को लटका देगा जब आप इसे कमांड निष्पादित करने के लिए कहते हैं, लेकिन इसे कमांड को अतुल्यकालिक रूप से चलाने के लिए कॉन्फ़िगर किया जा सकता है, जो कि मैं करता हूं। अधिक विवरण के लिए प्रलेखन पढ़ें।


3

मैं एक विम का उपयोग करता हूं जिसमें पाइथन इंटरप्रेटर संकलित है।

मेरे पास एक पायथन फ़ाइल है, जिसमें यह फ़ंक्शन है:

def pyterm(filename="", interactive=1):
    cmd = "%s %s %s " % (PYTHON, "-i" if interactive else "", filename)
    if "DISPLAY" in os.environ:
        return run_config(os.environ.get("XTERM"), cmd)
    else:
        return os.system(cmd)

और इसे कीबोर्ड शॉर्टकट में मैप करें:

nmap ;ru :update<CR>:python pyterm(vim.current.buffer.name, 0)<CR>
nmap ;ri :update<CR>:python pyterm(vim.current.buffer.name, 1)<CR>

मैंने पिछले वातावरण को निर्धारित किया था कि अगर gvim का उपयोग करके चलाने के लिए सटीक टर्मिनल निर्धारित किया जाए या X में नहीं तो उसी टर्मिनल में।

तब मैं आमतौर पर इसे चलाने के लिए (आमतौर पर परीक्षण करने के लिए) पायथन बफर में री; 'टाइप करता हूं।


2

वर्तमान फ़ाइल पर ग्नू मेक का उपयोग करके संकलन करने के लिए विम का उपयोग किया जा सकता है - भले ही फ़ाइल के लिए कोई मेकफिल न हो (अधिक विवरण के लिए यहां देखें ):

:make %:r

इस तरह विम आपको संकलक ( ) सूची - अगली त्रुटि, पिछली त्रुटि, नई विंडो लिस्टिंग त्रुटियों से क्विकफिक्स त्रुटि प्रतिक्रिया तक पहुंच प्रदान करता है ।:help quickfix:cn:cp:cw

अगर आपको गन्नू नहीं मिला है, तो आप मेकप चर (जी ++ में बदलाव अगर आप सी ++ संकलित कर रहे हैं) सेट कर सकते हैं:

:se makeprg=gcc\ -o\ %<\ %

और फिर vim मेक कमांड का उपयोग करके वर्तमान फ़ाइल संकलित करें और vim में त्रुटियों की एक त्वरित सूची प्राप्त करें :

:make

संपादित करें: यदि आप भी संकलित निष्पादन योग्य को vim के भीतर से चलाना चाहते हैं, तो आप कर सकते हैं ('!' निष्पादित, '%: r' बिना इसके प्रत्यय के फ़ाइल नाम है):

:!./%:r

1

Gcc, python आदि के मामले में आप इसे कोलन-बैंग कह सकते हैं: (!)

उदाहरण के लिए। :!python something.py


0
!gcc file.c && ./a.out

यह आपकी सी फ़ाइल को संकलित करने के साथ-साथ आपके द्वारा सभी विंडो के भीतर इनपुट के लिए निष्पादन योग्य पूछने को चलाएगा।


1
एक अधिक पूर्ण उत्तर में ':' शामिल होगा, और इसे और अधिक बहुमुखी बनाने के लिए आप 'file.c' को वर्तमान फ़ाइल ऑपरेटर '%' के लिए बदल सकते हैं::!gcc % && ./a.out
पियरज़

मैं अपने समान कुछ कर रहा हूं .vimrc, मैं इसका नक्शा Command + Shift + Rकरता हूं :map <D-R> :exe '!gcc %:p' <bar> exe '!'.getcwd().'/a.out'<cr>
f1lt3r

0

स्रोत कोड संकलन के विशेष मामले के बारे में।

  • संक्षिप्त उत्तर: क्रिस का उत्तर देखें: /unix//a/7825/3240
  • लंबे और अधिक सटीक उत्तर: यहाँ SO पर मेरा है: /programming//a/21477312/15934

और अगर आपके पास कुछ ऐसा है जो अजगर को संकलित कर सकता है, तो उसके makeprgअनुसार सेट करें ।

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