शेल से विम कमांड कैसे चलाएं?


12

यह एक गूंगा सवाल हो सकता है, लेकिन मेरे साथ सहन करें।

मैं कुछ सामान्य सामान को स्वचालित कर रहा हूं जो मैं एक नया कार्य वातावरण स्थापित करते समय करता हूं, और विम कमांड :BundleInstall(मेरे सभी विम प्लग को स्थापित करने के लिए) को स्वचालित करना चाहूंगा ।

क्या इसे खोल से चलाना संभव है?

वैकल्पिक रूप से, क्या स्क्रिप्ट को विम चलाना, निष्पादित :BundleInstallकरना, इंतजार करना संभव है जब तक कि यह खत्म न हो जाए और छोड़ दिया जाए?

धन्यवाद।

जवाबों:


14

से vim(1)आदमी पेज:

+ {आदेश}

-सी {कमांड}

पहली फ़ाइल पढ़ने के बाद {कमांड} निष्पादित किया जाएगा। {कमांड} की व्याख्या एक्स कमांड के रूप में की जाती है। यदि {कमांड} में रिक्त स्थान हैं, तो इसे दोहरे उद्धरण चिह्नों में संलग्न किया जाना चाहिए (यह उपयोग किए जाने वाले शेल पर निर्भर करता है)। उदाहरण: Vim "+ set si" main.c

नोट: आप 10 "+" या "-c" कमांड का उपयोग कर सकते हैं।


3
धन्यवाद! मुझे पता था कि मैं गूंगा महसूस करूंगा ...: - मैनपेज को अच्छी तरह से नहीं पढ़ने के लिए मुझे सही काम करता है। मैंने उपयोग करना समाप्त कर दिया vim +BundleInstall +qall!
imiric

4

आप अपनी कमांड को इस तरह निष्पादित कर सकते हैं:

vim -E -c BundleInstall -c q

जो आपके टर्मिनल में विम विंडो खोलने से बचाएगा।

नोट: मेरे पहले उत्तर में वह -sविकल्प शामिल था जो मुझे किसी अन्य अनुप्रयोग के लिए आवश्यक था, लेकिन यहां गलत था क्योंकि यह विम के गहनता को रोक देता था जिसमें BundleInstallकमांड को परिभाषित करने वाले प्लगइन को शामिल करना शामिल था।


1
धन्यवाद, लेकिन किसी कारण से यह मेरे लिए काम नहीं करेगा।
imiric

1
अब मैं देखता हूं क्यों। मैं यह भूल गया कि -sकुछ संदेशों को रोकना अधिक नहीं है - यह भी घुसपैठ को रोकता है - इसलिए बंडल इनस्टॉल की परिभाषा को खट्टा नहीं किया जा रहा था। ठीक करने के लिए एक ही रास्ता है कि पहले से पहले इस तरह के एक विकल्प जोड़ने के लिए किया जाएगा -c: --cmd 'runtime plugin/bundle.vim'। सूट करने के लिए उस फ़ाइल का नाम संपादित करें। देखते हैं :help -s-ex
गैरीजोन

2

जबकि ऊपर विशिष्ट नुस्खा यह करने का सही तरीका है, आप हमेशा ऑटोएक्सपैक्ट जैसे अधिक सामान्य दृष्टिकोण का उपयोग कर सकते हैं ।


0

उन स्थितियों के लिए जहां आपको पूरी तरह से लोड होने के लिए विम की आवश्यकता होती है जैसे कि आपने इसे मैन्युअल रूप से शुरू किया था, यह काम करता है:

vim -c "autocmd! CursorHold * <commands to run>"

उदाहरण के लिए, मैं :mapशेल से किसी फ़ाइल के आउटपुट को रीडायरेक्ट करना चाहता था , लेकिन मैं मैपिंग को कैप्चर करना चाहता था, जो कि विम-एयरलाइन अपनी टैबलाइन प्रदर्शित करने के बाद ही बनाता है (शीर्ष पर सभी बफ़र्न दिखाते हुए लाइन।) क्योंकि ऐसा लगता है। इस अतुल्यकालिक, बस -cएक फ़ाइल पर रीडायरेक्ट चलाने के लिए मैपिंग बनाने के लिए समय नहीं दे रहा था। एक बेहतर तरीका हो सकता है, लेकिन यह मेरे लिए काम करता है, खासकर जब से मैंने पहले से ही (0.1 सेकंड) updatetimeसेट 100किया है, जो कि CursorHoldघटना के आग लगने तक कितनी देर तक प्रभावित करता है । डिफ़ॉल्ट रूप से, विम इसे 4 सेकंड में सेट करता है।

vim -c "autocmd! CursorHold * set nomore | redir! > mapNew | map | redir END | q"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.