मैं विम के अंदर एक टर्मिनल कैसे चलाऊं?


303

मैं Emacs का अभ्यस्त हूं, लेकिन मैं विम को यह देखने की कोशिश कर रहा हूं कि मुझे कौन सा पसंद है।

एक चीज़ जो मुझे Emacs के बारे में पसंद है, वह Emacs के अंदर एक टर्मिनल चलाने की क्षमता है। क्या यह विम के अंदर संभव है? मुझे पता है कि आप विम से कमांड निष्पादित कर सकते हैं, लेकिन मैं एक टैब के अंदर एक टर्मिनल चलाने में सक्षम होना चाहूंगा।



42
है :! <command>आप के लिए क्या देख रहे हैं?
ताकेशिन

48
विम 8.0 के बाद से, एक :termकमांड है जो एक नई स्प्लिट विंडो में एक नया टर्मिनल खोलता है। यदि यह आपके लिए काम नहीं करता है, vim --version | grep -o .terminalतो यह देखने के लिए जांचें कि क्या यह सुविधा उपलब्ध है ( +terminal) या अनुपलब्ध है ( -terminal)।
सुसम पाल

जवाबों:


123

मैं निश्चित रूप से screenइस तरह से कुछ के लिए सिफारिश करेंगे । विम एक टेक्स्ट एडिटर है, शेल नहीं।

मैं Ctrl+ASवर्तमान विंडो को क्षैतिज रूप से विभाजित करने के लिए उपयोग करूंगा , या उबंटू के स्क्रीन और अन्य पैच किए गए संस्करणों में, आप Ctrl+A|लंबवत रूप से विभाजित करने के लिए (पाइप) का उपयोग कर सकते हैं । फिर खिड़कियों के बीच स्विच करने के लिए Ctrl+ATab(या कुछ सिस्टम, Ctrl+ACtrl+Iजो टाइप करना आसान हो सकता है) पर उपयोग करें। खिड़कियों के आकार और व्यवस्था को बदलने के लिए अन्य कमांड हैं।

या कम उन्नत उपयोग screenकेवल कई पूर्ण-स्क्रीन विंडो खोलने और उनके बीच टॉगल करने के लिए है। यह वही है जो मैं आमतौर पर करता हूं, मैं केवल विभाजित स्क्रीन सुविधा का उपयोग कभी-कभी करता हूं।

जीएनयू स्क्रीन जीवन रक्षा गाइड यदि आप इसके उपयोग से परिचित नहीं हैं सवाल अच्छा सुझावों की एक संख्या है।


7
+1 केवल मैंने हाल ही में स्क्रीन सुसमाचार को पुनः प्राप्त किया। मुझे आश्चर्य है कि मैं इसके बिना कैसे रहता था।
बंदूकें

118
मैं स्क्रीन के बजाय tmux चुनूंगा।
tomaszkubacki

81
हां, बेशक कोई स्क्रीन, या tmux, या टर्मिनेटर चला सकता है, या दूसरी विंडो और ऑल्ट-टैब खोल सकता है, या यहां तक ​​कि फुटपाथ के साथ सक्रिय KVM स्विच का उपयोग कर सकता है। लेकिन यह बात नहीं है - वे सभी समाधान टर्मिनल और वीआईएम के बीच एकीकरण का त्याग करते हैं , यही कारण है कि कोई इस स्थान पर समाधान की तलाश में परेशान करेगा। मुझे समझ नहीं आता कि यह उत्तर कैसे उत्तर है, अकेले शीर्ष या स्वीकृत उत्तर दें। मुझे लगता है कि मैं Conque कोशिश करूँगा।
13

33
यह शीर्ष उत्तर कैसे है ??? आपको इसे अनवांटेड करने और अगले उत्तर को नीचे वोट करने की आवश्यकता है, जो वास्तव में आपके प्रश्न का उत्तर देता है। स्क्रीन का उपयोग करना विम के भीतर एक शेल नहीं चलता है। यह किसी को एक और खोल शुरू करने के लिए कहने जैसा है। और जो बाहर फेंकते रहते हैं उनके लिए ":!" वह पहले से ही जानता था कि वह जानता था कि आज्ञाओं को कैसे निष्पादित किया जाता है, जो कि उसने नहीं पूछा ... शीश। अहंकार यहाँ इतना मोटा है कि आप इसे चाकू से काट सकते हैं।
असिर्सगोथरा

6
इस उत्तर को नए vim 8.1 फीचर टर्मिनल विंडो के
एलन गारिडो

232

अगस्त 2011 से आउट

की जाँच करें Conque शैल (पर भी GitHub )। चलो आप एक खोल नहीं, विम के अंदर किसी भी इंटरैक्टिव कार्यक्रम चलाते हैं।


21
:ConqueTerm bash <CR>, vim <CR>, :ConqueTerm bash.... पुनरावर्ती आतंक !!
केफ्लेविच

1
Psihodelia सही प्रतीत होता है। मैंने सिर्फ vim को --enable-pythoninterp के साथ संकलित किया है (साइबरविन + python के साथ vim वितरित नहीं करता है) और ConqueTerm को स्थापित करने के बाद, मुझे #set_buffer_settings से एक त्रुटि मिलती है। मैं यह पता लगाने में सक्षम नहीं हूं कि वह फ़ंक्शन कहाँ रहता है, या त्रुटि का क्या अर्थ है, इसका कोई भी विचार प्राप्त करें। संदेश में एक अमान्य तर्क के बारे में एक बयान शामिल है "संपादित करें ++ एनको = utf-8 bash \ - \ 2"। अरे।
नैट कैनेडी

47
पुनरावृत्ति को समझने के लिए, आपको पहले पुनरावृत्ति को समझना होगा।
स्टैब्लडॉग

19
@ PTukasz Niemier VIMCEPTION
सेबस्टियन

1
ऐसा लगता है कि यह अब समर्थित नहीं है, किसी को भी एक वैकल्पिक है?
डाईकेग

203

मुझे यकीन नहीं है कि आप क्या हासिल करना चाहते हैं (मैंने कभी Emacs का उपयोग नहीं किया है), लेकिन आप टाइप करके Vim में कमांड चला सकते हैं:

:! somecommand [ENTER]

और यदि आप कई कमांड में टाइप करना चाहते हैं, या थोड़ी देर के लिए शेल में खेलना चाहते हैं, तो आप हमेशा उपयोग कर सकते हैं:

:! bash (or your favourite shell) [ENTER]

एक बार कमांड या शेल समाप्त हो जाने पर, आपको Enterअपने संपादक विंडो पर वापस जाने के लिए प्रेस करने का विकल्प दिया जाएगा

विम जानबूझकर हल्के होते हैं और गैर-संपादकीय प्रकार की चीजों को करने की क्षमता में कमी होती है, जैसे कि विम फलक / टैब के अंदर पूर्ण-विकसित शेल चलाना, लेकिन जैसा कि ऊपर उल्लेख किया गया है कि विम-शेल जैसे तीसरे-पक्ष के एड-ऑन हैं: उस तरह की बात करना।

आमतौर पर अगर मैं विम और मेरे शेल (बैश) के बीच स्विच करना चाहता हूं, तो मैं वीम प्रक्रिया को रोकने के लिए CTRL+ हिट Zकरता हूं, अपने शेल में चारों ओर खेलता हूं, फिर 'एफजी' टाइप करता हूं जब मैं विम पर वापस जाना चाहता हूं - मेरे संपादक और मेरे पास रखना खोल अच्छा और अलग।


17
और अगर आप कमांड के आउटपुट को वर्तमान बफर में कॉपी करना चाहते हैं:: r! dir
साइबर ओलिवेरा

6
मैं दोनों Emacs और Vim का उपयोग करता हूं (और Vim के साथ बहुत अधिक अनुभव है)। लेकिन मैंने पाया है कि अक्सर यह एक ही समय में दो विचारों के साथ काम करने के लिए अच्छा और आसान होता है (एक यह देखने के लिए कि आप क्या संपादन कर रहे हैं और दूसरा इंटरैक्टिव शेल के भीतर काम करने के लिए है - उदाहरण के लिए आपके द्वारा किए गए कॉन्फ़िगरेशन परिवर्तन के प्रभाव का परीक्षण करना बस संपादित)। यह मेरे संज्ञान, प्रतिधारण और मानसिक वर्कफ़्लो के साथ भी मदद करता है जब महत्वपूर्ण बातों पर मुझे निगरानी रखने की आवश्यकता होती है तो स्क्रीन से गायब नहीं होते हैं (जैसे कि क्या होता है जब आप Ctrl-Z का उपयोग करते हैं या विम में शेल)।
22

यह एक महान जवाब है जो मेरा बहुत समय बचाएगा।
jerry_sjtu

अच्छा उत्तर! आगे भी इसकी प्रशंसा करने के लिए, मैं भी :r! command [ENTER]टिप्पणियों में उल्लेख किया जाएगा।
Jeach

151

जिस तरह से मैं इस के आसपास है:

  • विम Ctrl+ के साथ विराम दें Z,
  • टर्मिनल में खेलते हैं,
  • फिर ठीक उसी जगह पर लौटें जहां आपने कमांड टाइप करके विम को छोड़ा था fg

14
:!bashऐसा करने का एक अच्छा तरीका है
0atman

मुझे लगता है कि वह एक तरह की ड्रीमपीट चाहता है जैसे कि कार्यक्षमता
एडम मिलर

10
@ ओटमैन क्यों है :!bashअच्छे से अच्छा Ctrl+z? (जरा सोचकर)
सेबेस्टियन ग्रिग्नोली

2
@ SebastiánGrignoli क्योंकि Ctrl+Zउदाहरण के लिए, आप दूसरे फ़ोल्डर में जा सकते हैं, lsफिर git status, फिर , आदि Ctrl+Zएक "पॉज़" है, आप इसके साथ "फिर से शुरू" कर सकते हैं fg। लेकिन साथ:! बैश, जैसा कि मैं अब तक जानता हूं, आप केवल एक ही बार में एक कमांड चला सकते हैं, या यहां तक ​​कि अगर आप एक से अधिक कमांड चला सकते हैं, तो भी यह सुविधाजनक नहीं है। तो कुल मिलाकर, 'Ctrl + Z' ज्यादा बेहतर है
Leo

+1 क्योंकि यह किसी भी वातावरण में बहुत काम करता है। एक विदेशी प्रणाली पर काम करना जिसे मैं अनुकूलित नहीं कर सकता, और एक सस्ते PuTTY शेल के माध्यम से, यह बहुत अच्छा काम करता है।
t3sture

120

यदि आपके संस्करण विम में सक्षम है, तो :termकमांड के साथ एक टर्मिनल शुरू किया जा सकता है ।

टर्मिनल विंडो सपोर्ट Vim 8. में जोड़ा गया था। यह एक वैकल्पिक फीचर है जिसे V + + फीचर के साथ संकलित करते समय सक्षम किया जा सकता है। यदि विम के आपके संस्करण में टर्मिनल सपोर्ट है, :echo has('terminal')तो "1" आउटपुट करेगा।

प्रवेश :termआपको टर्मिनल-जॉब मोड में रखेगा , जहाँ आप उम्मीद के मुताबिक टर्मिनल का उपयोग कर सकते हैं।

टर्मिनल-जॉब मोड के भीतर , मोड को टर्मिनल-नॉर्मल पर दबाने Ctrl-W Nया Ctrl-\ Ctrl-Nस्विच करने की अनुमति देता है, जो कर्सर को ले जाने की अनुमति देता है और वीम के सामान्य मोड के समान चलने की आज्ञा देता है। टर्मिनल-जॉब मोड पर वापस जाने के लिए , दबाएँ ।i

अन्य उत्तर नवविराम में समान कार्यक्षमता का उल्लेख करते हैं।


5
iCtrl-wN ब्राउज़ मोड से स्विच करने के बाद टर्मिनल cmd मोड में वापस स्विच करने के तरीके के लिए +1 । यह tmux पर एक किलर फीचर है और विंडोज पर भी काम करता है।
रात्रि

1
क्या ऊर्ध्वाधर विभाजन का उपयोग करना संभव है :term?
विटाली ज़डेनविच

1
उत्तम! महान कि टर्मिनल बनाया गया है, ताकि हम अधिक प्लगइन्स के साथ गड़बड़ न करें। 8 के माध्यम से उन्नयन brew install vim --override-system-viऔर :termपूरी तरह से काम करता है। साझा करने के लिए धन्यवाद!
LeOn - हान ली

18
@VitalyZdanevich, :vertical :termबाईं विंडो में टर्मिनल के साथ लंबवत रूप से विभाजित हो जाएगा। :vertical :botright :termसही विंडो में टर्मिनल के साथ लंबवत रूप से विभाजित हो जाएगा। वैकल्पिक रूप से, आप मैन्युअल रूप से खिड़कियों को लेआउट कर सकते हैं, और फिर :term ++curwinसक्रिय विंडो में एक टर्मिनल खोलने के लिए उपयोग कर सकते हैं।
डेनियल एस।

esc ctrl-w w आपको विंडोज़ के बीच स्विच करने की अनुमति देता है
user1869582

87

:shफिर ctrl+d(बैश) में वापस जाने के लिए

अपडेट :

आप ctrl+dचलाने के लिए विम में मैप कर सकते हैं :sh, जो आपको बैश और विम के बीच जल्दी से टॉगल करने की अनुमति देता है।

noremap <C-d> :sh<cr>


1
मुझे लगता है ctrl+zऔर fgथोड़ा तेज़ हैं, क्योंकि आपको :shउस मामले में टाइप करने की ज़रूरत नहीं है ।
एलेक्स

:shयदि आप मैप करते हैं तो @ एलेक्स आपको टाइप करने की आवश्यकता नहीं है । के बाद noremap, आप केवल Ctrl+Dविम से sh, और चूंकि ^Dईओएफ है, जो समाप्त करता है sh, इसलिए आप वापस विम पर लौट आएंगे। एक कुंजी के बीच में shघूमना और विम कर सकते हैं ।
no1xsyzy

41

Vim 8.1 की मुख्य नई विशेषता विम विंडो में टर्मिनल चलाने के लिए समर्थन है।

:term विम के अंदर एक और विंडो में टर्मिनल खोलेंगे।


2
यह पूरी तरह से काम करता है, धन्यवाद! आपका उत्तर मूल प्रश्न की भावना में बहुत अधिक है
सबलस्की

नमस्ते, क्या आप जानते हैं कि इस मोड से कैसे निकलें?
user3289737

2
सामान्य टर्मिनल की तरह, टर्मिनल exitसे बाहर निकल जाएगा, फिर :qखिड़की बंद करने के लिए उपयोग करें
Yossarian42

2
@ user3289737 वैकल्पिक रूप से, आप विंडोज़ के बीच स्विच करने के लिए एक पंक्ति में दो बार Ctrl + W दबा सकते हैं। यह टर्मिनल विंडो के लिए विशिष्ट नहीं है, लेकिन साथ ही साथ काम करता है।
flarn2006

39

आखिरकार :terminal2017 में एक देशी कमांड को विम में जोड़ा गया।

यहाँ से एक अंश है : टर्मिनल readme:

यह सुविधा एक विम विंडो में एक टर्मिनल एमुलेटर चलाने के लिए है। टर्मिनल एमुलेटर से एक नौकरी शुरू की जा सकती है। उदाहरण के लिए, एक शेल चलाने के लिए:

 :term bash

या बिल्ड कमांड चलाने के लिए:

 :term make myprogram

नौकरी विम से असिंक्रोनस रूप से चलती है, विंडो को नौकरी से आउटपुट दिखाने के लिए अपडेट किया जाएगा, दूसरी विंडो में एडिटिंग के दौरान भी।


टर्मिनल एक ही टैब में एक बफर में चलता है। इसलिए यदि आप कई फ़ाइलों का उपयोग करने के अभ्यस्त हैं, तो आपको कुछ कठिनाई का सामना करना पड़ सकता है। स्विचिंग बफ़र अंततः टर्मिनल पर आ जाएंगे जहां से यह बिना किसी रिटर्न के एक बिंदु है, आपको टर्मिनल को मारना होगा। जब तक आप इसके बारे में जानते हैं, यह ठीक होना चाहिए। आशा है कि डेवलपर्स इसके लिए वर्कअराउंड लेकर आएंगे।
अरुणकुमार

1
@ArunMKumar टर्मिनल से "भागने" के लिए [Ctrl + W] का उपयोग करें, और फिर :bnहमेशा की तरह करें। टर्मिनल को मारने की कोई आवश्यकता नहीं है और यह कोई वापसी की बात नहीं है :)
fjardon

धन्यवाद, दोस्त, पूरी तरह से याद किया। मैंने कीमैप किया है : bn to a key और इसने काम करना बंद कर दिया है, यह फिर से काम कर रहा है। यह मेरा बुरा था।
अरुणकुमार

2017? आपका मतलब 2018 है?
flarn2006

1
@ flarn2006, 2017 बनाम 2018 के बारे में, Vim 8.1 की घोषणा 18 मई, 2018 को vim.org पर की गई थी, जिसमें "विम विंडो में टर्मिनल चलाने के लिए समर्थन" को "मुख्य नई सुविधा" के रूप में सूचीबद्ध किया गया था। यह सुविधा सबसे पहले 7 जुलाई, 2017 को पैच 8.0.0693 में उपलब्ध थी। github.com/vim/vim/commit/…
डैनियल एस।

32

यह सवाल पुराना है, लेकिन इसे खोजने वालों के लिए, एक नया संभव समाधान है: नेओविम में एक पूर्ण-स्तरीय, प्रथम श्रेणी का टर्मिनल एमुलेटर शामिल है, जो वास्तव में वही करता है जो ConqueTerm ने करने की कोशिश की। बस चलाते हैं :term <your command here>

<C-\><C-n>टर्म मोड को सामान्य-मोड पर वापस छोड़ देंगे। यदि आप मेरे जैसे हैं और पसंद करते हैं कि अभी भी बाहर निकलें मोड से बाहर निकलें, तो आप इसे अपने nvimrc में जोड़ सकते हैं:

tnoremap <ESC><ESC> <C-\><C-N>

और फिर ईएससी को दो बार मारना टर्मिनल मोड से सामान्य-मोड में वापस आ जाएगा, इसलिए आप उस बफर को हेरफेर कर सकते हैं जो अभी भी चल रहा है।

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

https://github.com/neovim/neovim


29

:term

यह फीचर Vim 8.1 में नया जोड़ा गया था, हालाँकि, जैसा कि इस पोस्टिंग को हाल ही में जारी किया गया था, इसलिए आपको इसका उपयोग करने के लिए अपडेट करने की आवश्यकता हो सकती है।


इसे vim 8.1 से पहले जोड़ा गया था। यह सिर्फ मुख्य बड़ी विशेषता है जो विम 8.0.001 में नहीं थी। यही कारण है कि यह एक vim 8.1 नवीनता के रूप में विज्ञापित है। अप्रैल 2018 में अक्टू 2017, और fjardon के एक से डैनियल जवाब देखें -> github.com/vim/vim/blob/master/runtime/doc/version8.txt#L18814
ल्यूक Hermitte

17

मुझे पता है कि मैं सीधे सवाल का जवाब नहीं दे रहा हूं, लेकिन मुझे लगता है कि यह एक अच्छा तरीका है। किसी ने भी tmux (या कम से कम एक स्टैंडअलोन जवाब के रूप में नहीं) का उल्लेख किया है। Tmux स्क्रीन की तरह एक टर्मिनल मल्टीप्लेक्स है। अधिकांश सामान दोनों मल्टीप्लेक्स में बनाए जा सकते हैं, लेकिन afaik tmux यह कॉन्फ़िगर करने के लिए अधिक आसानी से है। इसके अलावा अभी tmux को स्क्रीन की तुलना में अधिक सक्रिय रूप से विकसित किया जा रहा है और इसके आस-पास काफी बड़ा पारिस्थितिकी तंत्र है, जैसे कि कॉन्फ़िगरेशन की मदद करने वाले उपकरण, ecc।

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

:call VimuxRunCommand("ls")

यह कमांड वर्तमान फलक vim के नीचे एक छोटा क्षैतिज विभाजन बनाता है।

यदि आप पूरी कमांड नहीं चलाना चाहते हैं तो यह आपको एक संकेत से चलने दे सकता है:

<Leader>vp :VimuxPromptCommand<CR>

जैसा कि यह पर्याप्त नहीं था, कम से कम 6 'प्लेटफ़ॉर्म विशिष्ट प्लगइन्स' हैं:

  • vim-vroom : rspec, ककड़ी और परीक्षण / यूनिट के लिए धावक; vimux समर्थन के माध्यम सेg:vroom_use_vimux
  • vimux-ruby-test : आसानी से माणिक परीक्षण चलाने के लिए कमांड का एक सेट
  • vimux-cucumber : Vimux के माध्यम से Cucumber विशेषताएँ चलाएं
  • vim-turbux : tmux के साथ टर्बो रूबी परीक्षण
  • vimux-pyutils : vimux के लिए फ़ंक्शन का एक सेट जो ipython में कोड ब्लॉक चलाने की अनुमति देता है
  • vimux-nose-test : विमक्स में नाक परीक्षण चलाएं

यहाँ एक अच्छा "केस केस" है: स्पार्क और गार्ड के साथ विमक्स और टर्बक्स का उपयोग करने की मांग पर टेस्ट


यह समझाने के लिए परवाह करें कि इसे क्यों अस्वीकृत किया गया? (6 साल पहले से एक उत्तर होने के अलावा)
पाब्लो ओल्मोस डी अगुइलेरा सी।

13

किसी ने पहले से ही https://github.com/Shougo/vimshell.vim का सुझाव दिया था, लेकिन उन्होंने इसका उल्लेख क्यों नहीं किया। नतीजतन, जब मैं इस सवाल से दूर आया तो मैंने बहुत समय बर्बाद किया (अन्य उच्च रैंक वाले) विकल्पों की कोशिश कर रहा था।

Shougo / vimshell इसका उत्तर है। यहाँ पर क्यों:

टर्मिनल एमुलेटर होने के अलावा, विमशेल आपको सामान्य और दृश्य मोड में टर्मिनल आउटपुट के माध्यम से नेविगेट करने की अनुमति देता है। इस प्रकार, यदि कोई कमांड आप आउटपुट में परिणाम चलाते हैं जिसे आप केवल कीबोर्ड का उपयोग करके कॉपी और पेस्ट करना चाहते हैं ... VimShell इसे कवर करता है।

NeoVim में: टर्मिनल कमांड सहित अन्य विकल्पों में से कोई भी उल्लेख नहीं किया गया है। नेओविम का: टर्मिनल करीब आता है, लेकिन कम से कम निम्नलिखित तरीकों से 2/18/2017 तक कम हो जाता है:

  • कर्सर को बफ़र के अंत में ले जाता है, अंतिम पर उसी स्थान पर रखता है जैसे विमशेल करता है। समय की भारी बर्बादी।

  • Github पर इस पर चर्चाmodifiable = 1 देखने का समर्थन नहीं करता है , इसलिए vim-easymotion जैसे उपयोगी प्लगइन्स का उपयोग नहीं किया जा सकता है।

  • विम्सशेल जैसे लाइन नंबरों के प्रदर्शन का समर्थन नहीं करता है।

Neovim के: टर्मिनल सहित अन्य विकल्पों पर समय बर्बाद न करें। विमशेल के साथ जाएं।


1
NeoVim आपको सामान्य / विज़ुअल मोड में टर्मिनल आउटपुट से नेविगेट और कॉपी करने की अनुमति देता है। मेरे द्वारा हमेशा ऐसा ही किया जाता है। NVIM 0.1.6-dev का उपयोग करना
ऐलिस हेटन

धन्यवाद, मैं कोशिश करूँगा VimShell। मैंने उत्तर से एक गलत कथन को हटाने की स्वतंत्रता ले ली है। जैसा कि @Alice ने बताया, NeoVim :terminalबिल्कुल ऐसा ही कर सकता है।
कोनराड रुडोल्फ

:terminal:VimShellनेविगेशन और संपादन के रूप में और मूलभूत तरीकों से ऐसा नहीं कर सकते । ऊपर स्पष्टीकरण देखें।
user3751385


8

नहीं तुम नहीं कर सकते:

http://vimdoc.sourceforge.net/htmldoc/tips.html#shell-window


2
प्रवेश का समय न लें splitvt- यह रंग नियंत्रण कोडों का प्रबंधन करता है और vimपूरी तरह से अनुपयोगी बनाता है ।
new123456

12
"नहीं" एक बुरा जवाब है। एक बेहतर जवाब है "डिफ़ॉल्ट रूप से, नहीं।" तकनीकी रूप से, यह किया जा सकता है, और शायद आपको नया स्रोत कोड लिखने और इसे स्वयं संकलित करने, या एक प्लगइन लिखने की आवश्यकता है। यह आसान है? शायद नहीं, लेकिन यह किया जा सकता है। बस कह रहा है कि "नहीं, मैं ऐसा नहीं करूंगा।"
trusktr

2
@AnishRamaswamy अभी भी स्टॉक विम (इमेक के विपरीत) का उपयोग करके एक विम बफर के भीतर एक शेल चलाना संभव नहीं है। ओपी का सवाल यही था।
अम्बर

1
@ एम्बर, हाँ, जो ठीक होगा ओपी को छोड़कर स्टॉक विम का उपयोग करने का कोई उल्लेख नहीं किया गया है।
अनीश रामास्वामी

3
किसी को बस इस उत्तर को संपादित करने के लिए कहना चाहिए कि आप इसे स्टॉक विम के साथ नहीं कर सकते।
still_dreaming_1

4

जिस तरह से मुझे पता है, वह केवल विम-शेल , थर्ड-पार्टी पैच का उपयोग करना है।


पांडित्यपूर्ण होने के लिए, विम-शेल एक पैच है, न कि एक 'ऐड-ऑन' (जो मेरे लिए, कम से कम, इसका मतलब है कि यह एक स्क्रिप्ट है)। मैंने इसे व्यक्तिगत रूप से आज़माया नहीं है, लेकिन विम-विकी पर विम-शेल पेज दुर्भाग्य से सुझाव देता है कि यह विम 7.1+ के साथ संकलित नहीं होगा।
14:

पेडेंट को खुश करने के लिए बदल दिया। :) (15 वर्णों की तुलना में कुछ लंबा टाइप करना था। 'फिक्स्ड' काफी लंबा नहीं था)
16

Shougo / vimshell ( github.com/Shougo/vimshell.vim ) अच्छा काम करने लगता है। इसे एक गतिशील पुस्तकालय के निर्माण की आवश्यकता होती है, लेकिन यह काफी सरल है (cd <vim> / vimproc; make)
वेन वॉकर

3

मैं अब इसका उपयोग करता हूं, आप कोशिश कर सकते हैं। VimShell


2

वीटीएम की कोशिश करें , जो कि विम के अंदर एक बहुत अधिक पूर्ण फीचर शेल है। यह अपने इतिहास और स्पष्ट कार्यों के साथ थोड़ा छोटा है, और अभी भी विकास में है, लेकिन यह अभी भी बहुत अच्छा है


2

Vim के आपके संस्करण को मानकर +termपहले कमांड का समर्थन करता है , vim को एक कमांड (उदा set=/usr/bin/zsh) में उपयोग करने के लिए शेल सेट करता है , और फिर कमांड +term(यानी bo 15vs +term) चलाता है । आपको अपनी विंडोज़ की कुछ अतिरिक्त पैंतरेबाज़ी करनी पड़ सकती है (जैसे एक को हटाना और घुमाना), लेकिन आपके पास अपना टर्मिनल होगा।


0

मैं स्वीकार करता हूं कि मैं आपके प्रश्न का कड़ाई से जवाब नहीं दे रहा हूं, लेकिन एक ही खिड़की में विम और टर्मिनलों का उपयोग करते समय मेरे लिए क्या बेहतर काम किया है, Tmux है (जो कि स्क्रीन के समान "बैकग्राउंड सॉफ्टवेयर में चलने वाला" है, हालांकि स्क्रीन के समान है, हालांकि) एक विभाजन और टैब के साथ बेहतर काम करता है)।

यह पोस्ट आपको यह समझने में मदद करेगी कि वे एक साथ कैसे काम करते हैं: 'Tmux और Vim - साथ में बेहतर भी'

इस तरह हम विम को एक शक्तिशाली आईडीई में बदल सकते हैं


0

स्क्रीन को विभाजित करें और term ++curwinवीम बफर के अंदर टर्मिनल को चलाने के लिए कमांड चलाएं। निम्नलिखित आदेश दोनों करता है और मेरे लिए काम करता है:

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