2013-07-03 6 views
6

मैं विम स्क्रिप्ट में बाहरी कमांड निष्पादित करना चाहता हूं लेकिन मैं नहीं कर सकता कि मैं यह कैसे कर सकता हूं। उदाहरण के लिए मुझे chmod कमांड का उपयोग करके फ़ाइल अनुमति बदलने की आवश्यकता है (कृपया मान लें कि एप्लिकेशन को कमांड चलाने के लिए पर्याप्त अनुमति है)विम स्क्रिप्ट में बाहरी कमांड को निष्पादित करने के लिए कैसे करें?

क्या यह प्राप्त करने का कोई तरीका है?

+1

संभावित डुप्लिकेट [विस्क्रिप्ट के माध्यम से शेल कमांड कैसे चलाएं?] (Http://stackoverflow.com/questions/10766033/how-to-run-a-shell-command-through-vimscript) –

उत्तर

7

यदि आप चाहते हैं कि उपयोगकर्ता आउटपुट (या आदेश के साथ बातचीत करें) :! सही आदेश है। चुप निष्पादन के लिए (जैसा कि मुझे लगता है कि आपके chmod के साथ वांछित होगा), system() का उपयोग करना बेहतर है। विशेष रूप से विंडोज़ पर, यह एक कमांड प्रॉम्प्ट के पॉपअप से बचाता है जिसे मैन्युअल रूप से खारिज कर दिया जाना चाहिए।

:call system('chmod +x ' . shellescape(fname)) 
+0

अच्छा समाधान देखने के लिए। क्या कॉल सिस्टम() के आउटपुट को प्राप्त करने का कोई तरीका है और इसे मैन्युअल रूप से उपयोगकर्ता को दिखाएं? उदाहरण के लिए विम में echo() कमांड के माध्यम से। –

+2

यह आउटपुट देता है, और बाहर निकलने की स्थिति 'v: shell_error' में है। ': सहायता प्रणाली()' आपका मित्र है :-) –

6

आप :! vim कमांड का उपयोग कर सकते हैं। उदाहरण के लिए, echo 'Hello, World!' vim अंदर से करने के लिए प्रकार

:! echo 'Hello, World\!' 
vim में

(और इसलिए एक vim स्क्रिप्ट के भीतर से भी),। या, एक विम स्क्रिप्ट में, आप केवल

कारण आपको पहले की आवश्यकता है! ऐसा इसलिए है क्योंकि vim विशेष हैंडलिंग करता है! एक तर्क के पात्रों में! आदेश। यदि आप एक कमांड चला रहे थे जिसमें कोई भी शामिल नहीं है! चरित्र, तो आपको इसे बचने की जरूरत नहीं है।

आप इस बारे में गहराई में अधिक पढ़ने के लिए चाहते हैं, आप,

:help :! 
vim में

टाइप कर सकते हैं के रूप में @FDinoff कहा।

+0

यह भी सुनिश्चित करें 'एच:!' – FDinoff

2

मेरे पसंदीदा तरीका तो आप जो कुछ भी खोल में चाहते हो सकता है Ctrl-z धक्का या :sus चलाने vim प्रक्रिया को निलंबित करने के लिए है,।

जब आप पूरा कर लें, तो अपने vim सत्र को फिर से शुरू करने के लिए fg (अग्रभूमि) चलाएं।

अधिक जानकारी here मिल सकती है।

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

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