टर्मिनल में स्क्रीन-रिस्टोर को कैसे कॉन्फ़िगर करें?


10

अनुक्रम के बाद टर्मिनल / पर्यावरण के आधार पर अलग-अलग प्रभाव होते हैं:

$ ls
1
2
$ man ls
enter q

या तो मैं वर्तमान प्रॉम्प्ट के ऊपर अंतिम प्रदर्शित मैन-पेज स्क्रीन देखता हूं या एलएस आउटपुट और पिछले शेल आउटपुट को पुनर्स्थापित किया जाता है। उपयोग करते समय समान प्रभाव देखा जाता है vimऔर फिर शेल पर कुछ करने के लिए इसे निलंबित करना।

फेडोरा 19 पर - स्क्रीन के डिफॉल्ट नो-रिस्टोर से प्रतीत होता है, एक गनोम-टर्मिनल / xterm डिफ़ॉल्ट रूप से डू-रिस्टोर का उपयोग करता है।

सोलारिस पर यह प्रयुक्त टर्मिनल / टर्मोफ डीबी पर निर्भर करता है।

मैं विभिन्न प्रणालियों / टर्मिनलों के बीच लगातार व्यवहार बहाल करना चाहता हूं।


यदि आप हमेशा GNU स्क्रीन चलाते हैं, तो आपको लगातार व्यवहार मिलेगा।
जोर्डन

जवाबों:


16

इस सुविधा को 'वैकल्पिक स्क्रीन' कहा जाता है या सामान्य और वैकल्पिक स्क्रीन के बीच स्विच किया जाता है।

आप इसे एक्सटरम का उपयोग करके देख सकते हैं। उदाहरण के प्रकार के लिए man manएक में xtermऔर बाहर निकलने आदमी। अब आप Ctrl+ माउस 2 (मध्य क्लिक) के माध्यम से वैकल्पिक स्क्रीन पर स्विच कर सकते हैं -> 'वैकल्पिक स्क्रीन दिखाएँ'। वैकल्पिक रूप से आप सीधे xterm नियंत्रण अनुक्रम में प्रवेश कर सकते हैं , जैसे:

$ echo -e '\033[?47h' # alternate screen
$ echo -e '\033[?47l' # normal screen

पिछले दो कमांड भी गनोम-टर्मिनल (शायद दूसरों में भी) में काम करते हैं।

क्या होता है जब man/ vi/ lessआदि स्टार्टअप मूल रूप से एक अमूर्त स्पष्ट स्क्रीन कमांड भेजते हैं। बाहर निकलने (या निलंबित) पर वे एक अमूर्त पुनर्स्थापना-स्क्रीन कमांड भेजते हैं। कमांड टर्मिनल टर्मिनल में ठोस टर्मिनल नियंत्रण अनुक्रमों में कैसे परिवर्तित होता है।

वैकल्पिक स्क्रीन स्विचिंग अक्षम करें

सभी टर्मिनलों के लिए जो काम करना चाहिए, वह है लोकल टर्मोफ एंट्रीज को एडजस्ट करना, यानी एब्सट्रैक्ट क्लियर / रीस्टोर स्क्रीन कमांड्स की मैपिंग को हटाना।

आप इसे इस तरह कर सकते हैं - वर्तमान $TERMप्रविष्टि के लिए (उदाहरण के लिए फेडोरा 19 पर सूक्ति-टर्मिनल के लिए):

$ echo $TERM
xterm-256color
$ infocmp -1 > xterm-256color
$ sed 's/^\(xterm-256color\)|/\1-na|/ ; /smcup\|rmcup/d ' \
    xterm-256color > xterm-256color-na
$ diff -u xterm-256color* 
--- xterm-256color  2013-08-04 16:33:52.041393461 +0200
+++ xterm-256color-na   2013-08-04 16:36:56.829930520 +0200
@@ -1,5 +1,5 @@
 #  Reconstructed via infocmp from file: /usr/share/terminfo/x/xterm-256color
-xterm-256color|xterm with 256 colors,
+xterm-256color-na|xterm with 256 colors,
    am,
    bce,
    ccc,
@@ -155,7 +155,6 @@
    rin=\E[%p1%dT,
    rmacs=\E(B,
    rmam=\E[?7l,
-   rmcup=\E[?1049l,
    rmir=\E[4l,
    rmkx=\E[?1l\E>,
    rmm=\E[?1034l,
@@ -170,7 +169,6 @@
    sgr0=\E(B\E[m,
    smacs=\E(0,
    smam=\E[?7h,
-   smcup=\E[?1049h,
    smir=\E[4h,
    smkx=\E[?1h\E=,
    smm=\E[?1034h,
$ tic xterm-256color-na # loads the file to $HOME/.terminfo
$ find ~/.terminfo -type f
$ HOME/.terminfo/x/xterm-256color-na

अब आप इसका परीक्षण कर सकते हैं:

$ TERM=xterm-256color-na man man # and then hit q

यदि आप कई लोगों का उपयोग करते हैं तो आप अन्य टर्मिनलों के लिए उपरोक्त चरणों को दोहरा सकते हैं। यदि सब कुछ उम्मीद के अनुसार काम करता है तो आप TERMअपने शेल आरसी-फाइल के माध्यम से सेट कर सकते हैं ।

आप टर्मिनल नाम को सीधे एक पैरामीटर के रूप में निर्दिष्ट कर सकते हैं infocmp, जैसे:

$ infocmp -1 screen > screen

वैकल्पिक स्क्रीन स्विचिंग सक्षम करें

कुछ टर्मिनल वैकल्पिक स्क्रीन स्विचिंग सुविधा (जैसे स्क्रीन ) का समर्थन करते हैं , लेकिन इसे डिफ़ॉल्ट रूप से अक्षम करते हैं

के लिए screenआप इसे अपने के माध्यम से सक्षम कर सकते हैं ~/.screenrc:

$ cat ~/.screenrc
altscreen

यदि आप ssh के माध्यम से दूरस्थ लॉगिन करते हैं - तो कहें - एक सोलारिस सिस्टम शायद दूरस्थ रूप से कॉन्फ़िगर किया गया सिस्टम-वाइड टर्मो-डेटाबेस एक तरह का ऐतिहासिक, टूटा हुआ या कुछ असामान्य / सोलारिस-विशिष्ट डिफॉल्ट में शामिल है जो 'ब्लीडिंग एज' टर्मिनलों से मेल नहीं खाता है आप में ssh चलाते हैं।

इस प्रकार, यह स्थानीय टर्मोफ डेटाबेस को / usr / share / info (क्लाइंट पर) से host:~/.terminfo(सर्वर पर) कॉपी करने का विकल्प है ।

यदि संकलित टर्मऑफ़ प्रारूप संगत नहीं है, तो आप पिछली पैराग्राफ़ की तरह प्रविष्टियों का निर्यात / आयात भी कर सकते हैं।

मैंने एक Cygwin इंस्टॉलेशन से एक टर्मो-डीबी के साथ कोशिश की है और इसे सीधे Solaris 10 सिस्टम पर काम करते हुए कॉपी किया है।

यदि आप TERMINFOपर्यावरण वैरिएबल के माध्यम से अपना पथ निर्दिष्ट करते हैं, तो आप उन उपयोगकर्ताओं के बीच एक वैकल्पिक टर्मबॉय डीबी साझा करना चाहते हैं ।

नियंत्रण अनुक्रम पर ध्यान न दें

कुछ टर्मिनल वैकल्पिक स्क्रीन स्विचिंग के लिए नियंत्रण अनुक्रम को अक्षम करने का समर्थन करते हैं। उदाहरण के लिए xterm में एक विकल्प है, सूक्ति-टर्मिनल नहीं है।

Xterm के लिए, यह X-ressource है , उदा

XTerm*titeInhibit: true

कार्यक्रम विशिष्ट विन्यास

कुछ प्रोग्रामों में विन्यास फाइल होती है जो यह नियंत्रित करने के लिए कि वे किस अनुक्रम / टर्मोफ कमांड को भेजते हैं। उदाहरण के लिए

$ LESS=X less foo

lessस्क्रीन को साफ़ / पुनर्स्थापित नहीं करने के लिए कॉन्फ़िगर करता है।

आपके लिए vimकुछ ऐसा शामिल कर सकते हैं

set t_ti= t_te=

आप में ~/.vimrc

मुझे विकल्प पर नहीं मिला है कि शीर्ष के लिए उस व्यवहार को कैसे कॉन्फ़िगर किया जाए - डिफ़ॉल्ट रूप से यह पुनर्स्थापना-स्क्रीन नहीं भेजता है।


Sed cmd वास्तव युक्त पूरी लाइन को हटाना smcupया rmcup। मेरे मामले में, उनके साथ एक ही लाइन पर अन्य सामान आ रहे हैं। उन अन्य सामानों को भी हटा दिया गया। तो शायद कुछ s/[sr]mcup=[^,]*,//'बेहतर है।
मिंगलियनग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.