छोड़ने के बाद पिछली बैश गतिविधि से विम स्क्रीन बफर को कैसे बदलें?


14

मैं यह पता लगाने की कोशिश कर रहा हूं कि एक बैश (या विम) फीचर क्या है। यहाँ परिदृश्य है। मैं एक बैश टर्मिनल में हूं, फिर vim के साथ कुछ संपादित करें, फिर बैश वापस बाहर निकलें। कुछ टर्मिनलों में, विम सत्र स्क्रीन पिछली बैश शेल गतिविधि दिखाने के लिए गायब हो जाती है (यह वही है जो मैं चाहता हूं?)।

दूसरों में, विम सत्र स्क्रीन बफर रहता है (पुराने बैश शेल गतिविधि को छिपाना)। मुझे या तो स्क्रीन को साफ करना होगा, या तब तक इंतजार करना होगा जब तक मेरी बैश एक्टिविटी उस वीम सेशन को स्क्रीन से बाहर न निकाल दे।

मैं पिछले बैश गतिविधि से विम सत्र बफर को बदलने के लिए इस व्यवहार को कैसे नियंत्रित कर सकता हूं?

धन्यवाद टिम


जवाबों:


10

एक सत्र शुरू होने पर और जब यह समाप्त होता है, तो विम भेजता है t_tiऔर t_ksटर्मिनल पर जाता है। और दृश्यों टर्मिनल कारण इसकी वैकल्पिक स्क्रीन करने के लिए स्विच।t_tet_ket_tit_te

अपनी ~/.vimrcफ़ाइल में आप vimस्क्रीन पर दस्तावेज़ छोड़ सकते हैं जब वह इस लाइन को शामिल करके बाहर निकलता है:

set t_ti=""

यदि आपके पास एक रेखा के समान है, तो इसे हटाने से पिछले टर्मिनल की सामग्री दिखाई देनी चाहिए जब आप बाहर निकलते हैं vim


4

इस समस्या का एक कारण प्रोग्राम का उपयोग करना हो सकता है screen। मुझे लगता है कि जब मैं एक screenसत्र में हूँ तो विम टर्मिनल राज्य को वापस नहीं कर सकता।

यह निश्चित नहीं है कि उबंटू 15.10 में स्क्रीन के लिए विशिष्ट है या स्क्रीन / विम कॉम्बो के लिए। जैसा कि ऊपर वर्णित है, वही कारण है कि मुझे लगता screenहै कि अलग-अलग शब्द हैं।


2
altscreen on~ / .Screenrc फ़ाइल में जोड़ने से स्क्रीन के लिए समस्या हल हो जाती है।
बारबिकज़बोय 4

3

~/.bash_profileहर बार जब आप लॉगिन करते हैं तो हर बार टेंटर के रूप में TERM एक्सपोर्ट करने के लिए अपनी फाइल में एक लाइन जोड़ें । निम्नानुसार करें;

echo "TERM=xterm; export TERM" >> ~/.bash_profile

अब अगली बार जब आप लॉगिन करते हैं तो आपकी समस्या ठीक हो जाएगी, और यदि आप फिर से लॉगिन नहीं करना चाहते हैं तो आप इनमें से एक कर सकते हैं ...

// either ...
export TERM=xterm
// ... or ...
TERM=xterm; export TERM
// ... or ...
source ~/.bash_profile

1
ऐसा नहीं होगा export $TERM?
23

1
@chrsblck: नहीं, क्योंकि exportनाम (जैसे TERMइस मामले में) एक स्थानीय चर के बजाय एक पर्यावरण चर के रूप में निर्यात करता है । यदि आप export $TERMइस उदाहरण में उपयोग करते हैं तो यह $TERMसंस्करण आपके लिए समाधान xtermकरेगा env var $xterm, जो शायद परिभाषित नहीं है। अच्छा सवाल हालांकि, यह हमेशा मेरे लिए भी गलत लगता है।
ekerner

2

टिम। उपरोक्त दोनों उत्तर सही हैं। विम टर्मिनल को "वैकल्पिक स्क्रीन" पर स्विच करता है यदि ऐसा करने की क्षमता $ TERM के लिए प्रविष्टि प्रविष्टि में परिभाषित है।

आप कहते हैं "कुछ टर्मिनलों में (... यह सही काम करता है ...)" और "दूसरों में (... यह गलत काम करता है ...)"

क्या आप उन सभी टर्मिनलों के लिए सटीक एक ही टर्मिनल एमुलेटर चला रहे हैं?

उदाहरण के लिए, मेरे घर के लिनेक्स बॉक्स पर, मेरे पास gnome-टर्मिनल, xterm, Konsole, yakuake है, और शायद कुछ और भी मैं भूल गया हूं, साथ ही ctrl-alt-F1 ... से जुड़े "वर्चुअल टर्मिनल" के बारे में भी। ctrl-alt-F6 या तो। इनमें से अधिकांश "xterm" के लिए "मानक" टर्मकैप प्रविष्टि के साथ काम कर सकते हैं - आभासी टर्मिनलों को छोड़कर जिनके पास "लिनक्स" नाम की एक टर्मिनल परिभाषा है।

टर्मिनल एमुलेटर की जाँच करें और टर्मिनलों पर $ TERM का मान जो काम करते हैं और जो अलग नहीं है उन्हें देखने के लिए। इसके अलावा, यदि आप कभी-कभी एक अलग उपयोगकर्ता के रूप में लॉग इन करते हैं, तो यह समस्या के दिल में हो सकता है - चूंकि प्रत्येक उपयोगकर्ता का अपना स्वयं का होता है। विभिन्न सेटिंग्स उपयोगकर्ता से उपयोगकर्ता के लिए भिन्न हो सकती हैं।

उम्मीद है की वो मदद करदे!
-pbr


1

यह आपके टर्मिनल और आपकी मशीन की सेटिंग्स के साथ टर्मिनल जानकारी के साथ काम करना है। एक पोर्टेबल समाधान GNU स्क्रीन का उपयोग करना है। विम के लिए एक विंडो खोलें और बैश के लिए दूसरा, जिससे दोनों सत्र अलग हो जाएं। यदि आप X11 पर xterm जैसे ग्राफिकल टर्मिनल, Gnome पर Gnome टर्मिनल या OS X पर टर्मिनल का उपयोग कर रहे हैं तो आप एक ही प्रभाव प्राप्त करने के लिए एक नई विंडो या टैब खोल सकते हैं।

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