OS X टर्मिनल लाइनें स्क्रॉलबैक में नहीं जाती हैं


12

मुझे एक समस्या है कि Mac OS X के टर्मिनल (TERM = xterm) का उपयोग करते समय फसलें आती हैं: कभी-कभी यह अपने आप ही एक ऐसी अवस्था में पहुँच जाती है जहाँ ऊपर स्क्रॉल करने वाली रेखाएँ स्क्रॉलबैक बफर में नहीं जोड़ी जाती हैं। मैं उपयोग screenया समान नहीं कर रहा हूँ ; यह एक टर्मिनल टैब के अंदर एक प्लेन बैश शेल है।

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

क्या काम नहीं किया है:

  • शेल मेनू के माध्यम से सॉफ्ट और हार्ड रीसेट
  • resetटैब में चल रहा है

क्या टर्मिनल और / या xterm स्थिति को रीसेट करने का एक विश्वसनीय तरीका है?

किसी को क्या हो रहा है के लिए एक स्पष्टीकरण प्रदान कर सकते हैं, भले ही एकमात्र तय टैब बंद करने और एक नया खोलने के लिए है?


क्या मैक ओएस एक्स संस्करण आप चल रहे हैं? क्या आपके पास "असीमित" से कम पर बफर है और आपके द्वारा गायब की गई लाइनें बस सबसे पुरानी लाइनें हैं जो बफर के पीछे के छोर से बाहर हुई थीं?
स्पाइफ

मैक ओएस एक्स 10.6.2, और बफर 10,000 लाइनें हैं, हालांकि खो गई लाइनें स्क्रीन से बस स्क्रॉल करने वाली हैं। अगर मैं एक स्क्रीन को पेज करता हूं, तो वे लाइनें वहां नहीं हैं, और वास्तव में जैसे ही लाइनें शीर्ष पर स्क्रॉल होती हैं, स्क्रॉलबैक का सबसे हाल का पृष्ठ कभी नहीं बदलता है।
स्टीव मैडसेन

जवाबों:


19

इसका मतलब है कि टर्मिनल वैकल्पिक स्क्रीन बफर का उपयोग कर रहा है। एक मुख्य स्क्रीन है, जो स्क्रॉलबैक लॉग में स्क्रॉल करता है, और एक वैकल्पिक स्क्रीन जो नहीं करता है। "फुल स्क्रीन" या "स्क्रीन-ओरिएंटेड" प्रोग्राम जैसे टॉप, कम, एमएसीएस, वीआईएम और स्क्रीन टर्मिनल को डिफ़ॉल्ट रूप से वैकल्पिक स्क्रीन पर स्विच करते हैं।

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

मैक ओएस एक्स लॉयन 10.7 के रूप में, टर्मिनल में एक मेनू आइटम है जिसे आप मैन्युअल रूप से स्क्रीन स्विच करने के लिए उपयोग कर सकते हैं:

देखें> दिखाएँ / छुपाएँ वैकल्पिक स्क्रीन

यह मुख्य रूप से प्रदान किया जाता है ताकि आप "पूर्ण स्क्रीन" प्रोग्राम से बाहर निकलने के बाद वैकल्पिक स्क्रीन से टेक्स्ट को देख या कॉपी कर सकें। Xterm में एक समान कमांड है।

आप किसी विशेष स्क्रीन का उपयोग करने के लिए प्रोग्राम को मैन्युअल रूप से बाध्य करने के लिए भी इसका उपयोग कर सकते हैं, उदाहरण के लिए, आउटपुट स्क्रॉलबैक लॉग में जाता है या नहीं, इसे नियंत्रित करने के लिए। हालाँकि, यदि आप वर्तमान में एक प्रोग्राम का उपयोग कर रहे हैं जो स्पष्ट रूप से वैकल्पिक स्क्रीन पर स्विच करता है, तो आप इसे भ्रमित कर सकते हैं या अप्रत्याशित परिणाम प्राप्त कर सकते हैं यदि आप इसे प्रोग्राम को चालू करते समय मुख्य स्क्रीन पर लागू करते हैं, तो सावधानी के साथ इसका उपयोग करें।

कार्यक्रम के आधार पर, इसके बजाय मुख्य स्क्रीन का उपयोग करने के लिए इसे कॉन्फ़िगर करने के लिए एक कमांड-लाइन तर्क या कुछ अन्य साधन हो सकते हैं। जैसे, less -X

कुछ टर्मो एंट्रीज़ को विशेष रूप से वैकल्पिक स्क्रीन, उदाहरण के लिए दबाने के लिए डिज़ाइन किया गया है xterm1TERM=xterm1 emacsमुख्य स्क्रीन पर Emacs चलाएगा। मैं xterm1स्थायी रूप से उपयोग करने की अनुशंसा नहीं करता, क्योंकि यह xterm-256colorशेर पर डिफ़ॉल्ट की तुलना में कई अन्य उपयोगी सुविधाओं को अक्षम करता है ।

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

वर्तमान में कौन सा प्रोग्राम चल रहा है यह देखने के लिए, टर्मिनल विंडो या टैब शीर्षक में प्रदर्शित प्रोग्राम नाम को देखें, या इंस्पेक्टर विंडो ( शेल> शो इंस्पेक्टर ) देखें। इंस्पेक्टर की सूची में अंतिम प्रक्रिया स्क्रीन का उपयोग करके वर्तमान कार्यक्रम है (आमतौर पर)। इसके बजाय आपको मुख्य स्क्रीन का उपयोग करने के लिए कॉन्फ़िगर करना होगा।


1
यह एक बहुत ही आशाजनक उत्तर की तरह लगता है। क्या एक उचित व्याख्या यह है कि एक कार्यक्रम असामान्य रूप से छोड़ सकता है, वैकल्पिक स्क्रीन को सक्रिय छोड़ सकता है?
स्टीव मैडसेन

यदि आप "पूर्ण स्क्रीन" प्रोग्राम चलाने के बाद शेल में वापस आ गए हैं, तो हाँ, यह एक संभावना है, हालांकि अधिकांश लोकप्रिय कार्यक्रम, जिन्हें मैंने सूचीबद्ध किया था, स्वयं के बाद सफाई के बारे में विश्वसनीय हैं। यदि "फुल स्क्रीन" प्रोग्राम क्रैश हो जाता है तो यह टर्मिनल को वैकल्पिक स्क्रीन पर छोड़ सकता है। हालाँकि, आपने कहा कि आपने शेल> हार्ड रीसेट भेजें , जिसमें मुख्य स्क्रीन पर वापस स्विच करना शामिल है। यदि यह फिर से होता है, तो आप इस आदेश का उपयोग करके वापस स्विच करने का प्रयास कर सकते हैं:tput rmcup
क्रिस पेज

एक और संभावना यह है कि एक कार्यक्रम ने "स्क्रॉल क्षेत्र" के साथ टर्मिनल को छोड़ दिया। स्क्रॉल करने के लिए टर्मिनल को केवल उप-रेंज को स्क्रॉल करने के लिए कोड बताने के लिए कोड हैं। उदाहरण के लिए, स्थिति रेखाएँ प्रदर्शित करने के लिए प्रोग्राम इसका उपयोग करते हैं, जो स्क्रीन को बंद नहीं करते हैं। यदि स्क्रॉल क्षेत्र में शीर्ष रेखा शामिल नहीं है, तो पाठ स्क्रॉलबैक लॉग में स्क्रॉल नहीं करेगा। फिर, हालांकि, आपने कहा कि आपने हार्ड रीसेट की कोशिश की है, जिसे स्पष्ट करना चाहिए, वह भी।
क्रिस पेज

2
मेरे मामले में, ऐसा लगता है कि sshएक दूरस्थ मशीन के लिए मेरा सत्र विफल रहा (समय समाप्त हो गया?) जब मैं अंदर था vi, जाहिरा तौर पर अल्टरनेट स्क्रीन में टर्मिनल छोड़ रहा था (क्योंकि viसफाई करने का मौका कभी नहीं दिया गया था)। तत्पश्चात, sshउसी टर्मिनल में कोई भी नया सत्र ओपी द्वारा बताई गई समस्या को प्रदर्शित करेगा, जब तक कि मैं व्यू> Hide अल्टरनेट स्क्रीन मेनू आइटम का चयन करके समस्या का समाधान नहीं करता ।
हेफेस्टस

धन्यवाद, देखें> दिखाएँ / छुपाएँ वैकल्पिक स्क्रीन मदद की। इसका एक महत्वपूर्ण संयोजन है, जो मुझे अनजाने में हिट होना चाहिए था और यह नहीं पता था कि क्या हुआ या कैसे पूर्ववत करें
aexl
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.