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


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

यह एक नया टैब खोलने के तुरंत बाद ऐसा नहीं करता है। मेरा मानना ​​है कि यह समस्या टैब में मैंने जो कुछ चलाया है उसका दुष्प्रभाव है। मेरा अनुमान है कि यह xterm अनुकरण, संभवतः स्क्रॉल क्षेत्र के साथ कुछ करने के लिए है।

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

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

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

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


8
2018-03-15 15:34


मूल


मैक ओएस एक्स संस्करण क्या चल रहा है? क्या आपके पास "असीमित" से कम कुछ पर बफर है और जिन लाइनों को आप याद कर रहे हैं वे बस सबसे पुरानी रेखाएं हैं जो बफर के पीछे के अंत में गिर गईं? - Spiff
मैक ओएस एक्स 10.6.2, और बफर 10,000 लाइनें हैं, हालांकि खोई गई रेखाएं स्क्रीन से बस स्क्रॉल कर रही हैं। यदि मैं एक स्क्रीन को पेज करता हूं, तो वे लाइनें वहां नहीं हैं, और वास्तव में शीर्ष पर स्क्रॉल होने के कारण, स्क्रॉलबैक का सबसे हालिया पृष्ठ कभी नहीं बदलता है। - Steve Madsen


जवाब:


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

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

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

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

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

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

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

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

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

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


14
2017-08-28 11:38



यह एक बहुत ही आशाजनक उत्तर की तरह लगता है। क्या एक उचित स्पष्टीकरण है कि एक प्रोग्राम असामान्य रूप से छोड़ सकता है, जिससे वैकल्पिक स्क्रीन सक्रिय हो जाती है? - Steve Madsen
यदि आप "पूर्ण स्क्रीन" प्रोग्राम चलाने के बाद खोल में वापस आ गए हैं, तो, यह एक संभावना है, हालांकि मेरे द्वारा सूचीबद्ध किए गए अधिकांश लोकप्रिय कार्यक्रम स्वयं के बाद सफाई के बारे में विश्वसनीय हैं। यदि कोई "पूर्ण स्क्रीन" प्रोग्राम दुर्घटनाग्रस्त हो जाता है तो यह टर्मिनल को वैकल्पिक स्क्रीन पर छोड़ सकता है। हालांकि, आपने कहा कि आपने कोशिश की शैल> हार्ड रीसेट भेजें, जिसमें मुख्य स्क्रीन पर वापस स्विचिंग शामिल है। यदि यह फिर से होता है, तो आप वापस स्विच करने के लिए इस कमांड का उपयोग करने का प्रयास कर सकते हैं: tput rmcup - Chris Page
एक और संभावना यह है कि एक कार्यक्रम ने "स्क्रॉल क्षेत्र" के साथ टर्मिनल छोड़ा। स्क्रॉल करते समय लाइनों की उप-श्रेणी को स्क्रॉल करने के लिए टर्मिनल को बताने के लिए कोड हैं। कार्यक्रम स्थिति रेखाओं को प्रदर्शित करने के लिए इसका उपयोग करते हैं, उदाहरण के लिए, जो स्क्रीन को स्क्रॉल नहीं करते हैं। यदि स्क्रॉल क्षेत्र में शीर्ष पंक्ति शामिल नहीं है, तो पाठ स्क्रॉलबैक लॉग में स्क्रॉल नहीं करेगा। फिर भी, आपने कहा कि आपने हार्ड रीसेट की कोशिश की है, जिसे भी इसे साफ़ करना चाहिए। - Chris Page
मेरे मामले में, ऐसा लगता है कि मेरा क्या है ssh रिमोट मशीन पर सत्र विफल रहा (टाइम आउट?) जब मैं अंदर था viजाहिर है, टर्मिनल को वैकल्पिक स्क्रीन में छोड़कर (क्योंकि vi कभी साफ करने का मौका नहीं दिया गया था)। इसके बाद, कोई नया ssh उसी टर्मिनल में सत्र ओपी द्वारा वर्णित समस्या का प्रदर्शन करेगा, जब तक कि मैंने समस्या का चयन करके समस्या का समाधान नहीं किया देखें> वैकल्पिक स्क्रीन छुपाएं मेनू आइटम। - Hephaestus