मेरे पास इस उत्तर का परीक्षण करने के लिए एक मैक काम नहीं है, लेकिन मैं लिनक्स में XTerm में इस समस्या का सामना कभी-कभार करता हूं और (iTerm2 एक ही नियंत्रण कोड का सम्मान करता है) आपको मददगार नीचे ठीक मिल सकता है।
टर्मिनल के अंदर निम्नलिखित शेल कमांड चलाएँ जहाँ आप समस्या देख रहे हैं:
printf "\e[?1004l"
(ध्यान दें कि अंतिम वर्ण कम-मामला 'ell' है।)
यह एएनएसआई नियंत्रण अनुक्रम थॉमस डिके के उत्तर में सूचीबद्ध एक की तरह है, लेकिन यह सुविधा को बंद कर देता है (बजाय)। यह सभी अनुप्रयोगों में आपकी समस्या को हल करना चाहिए, न कि केवल विम, पात्रों को बिल्कुल होने से रोककर।
लिनक्स पर मैं निम्न चरणों के साथ काम करने वाले इस नियंत्रण अनुक्रम को प्रदर्शित कर सकता हूं:
- इसमें रन
xtermकरके फीचर को इनेबल करें printf "\e[?1004h"।
- उसी XTerm से
xeyes किसी अन्य GUI एप्लिकेशन को चलाएं या चलाएं । (किसी कारण से, यह प्रभाव मेरे लिए तब तक नहीं होता है जब तक कि प्रश्न में XTerm एक एप्लिकेशन लॉन्च नहीं करता है। कोई भी जानता है कि क्यों?)
- बार-बार मूल XTerm (जैसे विंडोज़ पर क्लिक करके) में फोकस को स्विच करें और देखें
^[[Oऔर ^[[Iमूल XTerm में "टाइप" किया जा रहा है।
- अब Xeyes को बंद करें, मूल XTerm पर वापस लौटें, और चलाएं
printf "\e[?1004l"(सुविधा को अक्षम करने के लिए, जैसा कि ऊपर दिए गए फिक्स में वर्णित है)।
- ऊपर दिए गए " रन
xeyes, स्विच फ़ोकस " को दोहराएं , लेकिन इस बार टर्मिनल में कोई वर्ण दर्ज नहीं किया गया है।
मैं व्यक्तिगत रूप से केवल इस समस्या को देखता हूं अगर मैंने अनजाने में टर्मिनल को द्विआधारी आउटपुट डंप किया है, लेकिन यदि आप इसे अधिक नियमित रूप से सामना कर रहे हैं, तो आप इसे printfअपने शेल की इंटरैक्टिव स्टार्टअप स्क्रिप्ट (जैसे ~/.bashrc) में जोड़ना चाह सकते हैं । यदि सुविधा पहले से ही अक्षम है, तो नियंत्रण कोड भेजने के लिए कोई नुकसान (XTerm के तहत कम से कम) प्रतीत नहीं होता है, इसलिए यह सुरक्षित होना चाहिए, भले ही आप कभी-कभी इस समस्या को देखें।
यदि आप अपने शेल के बारे में चिंतित हैं जो हमेशा उस आउटपुट को उत्पन्न करते हैं, तो शायद इसलिए कि आप कभी-कभी उन जगहों पर इसका उपयोग करते हैं जो उन नियंत्रण कोडों को अच्छी तरह से संभाल नहीं पाते हैं, या यदि शेल शुरू होने के बाद समस्या कभी-कभी ट्रिगर होती है, तो आप सेट करना पसंद कर सकते हैं alias focusfix='printf "\e[?1004l"'मैन्युअल रूप से चलाने के लिए इसे और अधिक सुविधाजनक बनाने के लिए एक उपनाम (जैसे के साथ )।