मेरी टर्मिनल स्क्रीन में ब्रैकेटेड पेस्ट मोड को छिटपुट रूप से क्यों सक्षम किया गया है?


23

मैं Ubuntu 14.04 का उपयोग करता हूं और मेरी टर्मिनल स्क्रीन के साथ एक अजीब मुद्दा है जो मुझे बहुत परेशान कर रहा है। क्या कोई इसके साथ मेरी मदद कर सकता है या मुझे समझा सकता है कि क्या मैं कुछ गलत कर रहा हूं या गैर-लिनक्स? मेरे पास कुछ हल है लेकिन मैं यह समझना चाहता हूं कि ऐसा बार-बार क्यों होता है।

मैं अक्सर अपने नोट्स या इंटरनेट से बैश कमांड कॉपी करता हूं और कभी-कभी मुझे अजीब 0 ~ और 1 ~ सिंबल मिलते हैं जो कॉपी किए गए चीजों को लपेटता है। यह बहुत कष्टप्रद है और यह पूरी तरह से बेतरतीब ढंग से होता है।

एक लंबी खोज के बाद मुझे पता चला कि इस चीज़ को ब्रैड पेस्ट मोड कहा जाता है, इसलिए अब मैं printf "\e[?2004l"अपने टर्मिनल को ठीक करने के लिए इस कमांड का उपयोग करता हूं अगर यह मोड अचानक सक्षम हो गया।

क्या इस सुविधा को किसी तरह स्थायी रूप से अक्षम करना संभव है? मैं अब काम करने वाली सभी उबंटू मशीनों पर इसका सामना करता हूं। पहले मैंने उबंटू 10.10 और 12.04 का इस्तेमाल किया था और मैंने पहले कभी इस तरह का मुद्दा नहीं उठाया था।

जवाबों:


11

आप ब्रैकेटेड पेस्ट मोड को अक्षम कर सकते हैं।

अस्थायी रूप से, इसे बेश में आज़माने के लिए:

bind 'set enable-bracketed-paste off'

फिर, अगर आपको यह पसंद है कि यह कैसे व्यवहार करता है, तो आप सेटिंग को अपने ~/.inputrcसिस्टम में या सिस्टम-वाइड पर /etc/inputrc(या जहां भी यह उबंटू में है) डाल सकते हैं ।


4
मेरे लिए यह सब करने के लिए लगता है यह है तो मैं पत्र "पी" टाइप नहीं कर सकता (और केवल एक कम मामले "पी"), या इसे बिल्कुल पेस्ट करें, और कुछ नहीं
ब्रायन कहते हैं, मोनिका

@BrianLeishman अजीबोगरीब तरीके के कारण bindतर्कों को मान्यता नहीं देता है, यह तब होगा जब आप इस कमांड को वर्जन 7 से पहले वर्जन 7 का उपयोग करके या 4.4 से पहले बैश में चलाएंगे। यह उत्तर उबंटू की अगली रिलीज (17.04) तक कुछ भी उपयोगी नहीं होगा।
एंथनी जी -

printfदृष्टिकोण काम करता है, लेकिन ऐसा नहीं काम जब मेरे में डाल करता है .bashrc, और सुविधा किसी भी तरह खुद को पीठ पर समय-समय पर बदल जाता है। bindदृष्टिकोण अपने कीबोर्ड (टूट जाता है pकुंजी नहीं काम , and putting that line in my ~ / .inputrc` काम करता है, 10 सेकंड, और फिर शुरू होता है सांत्वना बाहर barfing के लिए -enaset-enaset-...उपयोग की 10 सेकंड के बाद हमेशा के लिए। मैं अंत में बस मैन्युअल रूप से स्रोत बेवकूफ ठीक करने के लिए से बैश 4.4 करने के लिए उन्नत समस्या।
बादल

1
सही कमांड है bind 'set enable-bracketed-paste off'(पहले `-` के बजाय एक स्थान के साथ। केवल एक वर्ण का संपादन संभव नहीं लगता।
तीर

7

आप उस कमांड को अपने में डाल सकते हैं bashrc। फिर यह हर बार जब आप अपना टर्मिनल खोलते हैं, तो यह लागू होता है।

बस टाइप करें vi ~/.bashrcऔर printf "\e[?2004l"अंत में जोड़ें और फ़ाइल को सहेजें:wq


हां, मैंने पहले ऐसा किया था :) बाद में मैंने इस मोड को निष्क्रिय कर दिया जैसा कि @jwd ने सुझाव दिया है।
आर्टीमेडवेल

1
echo 'printf "\e[?2004l"' >> ~/.bashrcएक लाइन में एक ही काम करता है, और आप के साथ सत्यापित कर सकते हैं tail -n1 ~/.bashrc। उपयोग करने की कोई आवश्यकता नहीं है vi
pzkpfw

6

ऐसा क्यों होता है, के अपने मूल प्रश्न का उत्तर देने के लिए , यहाँ एक संभावित परिदृश्य है:

  • मेरे घर के कंप्यूटर में zsh का एक नया संस्करण था जो ब्रैकेटेड पेस्ट का समर्थन करता था (चलो इसे शेल ए कहते हैं)
  • मैंने अपने कंप्यूटर को bash के पुराने संस्करण पर सेट किए गए शेल के साथ sshed किया, जो ब्रैकेटेड पेस्ट (शेल B) का समर्थन नहीं करता है

समस्या यह है, मेरा टर्मिनल प्रोग्राम अभी भी सोचता है कि शेल ए से शेल बी तक sshing करते समय ब्रैकेटेड पेस्ट को सक्षम किया जाता है, इसलिए यह आपके पेस्ट की गई सामग्री (0 ~ और 1 ~ बिट्स) के चारों ओर वर्णों को जोड़ता रहता है। शेल बी उनका समर्थन नहीं करता है इसलिए यह बस उन्हें अपरिवर्तित से गुजरता है। आपको अपने टर्मिनल को ब्रैकेट पेस्ट को बंद करने के लिए बताना होगा ताकि आपका शेल एक विशेष एस्केप अनुक्रम प्रिंट कर सके - जो कि printf "\e[?2004l"करता है।

समस्या को हल करने के कुछ तरीके हैं:

  1. यदि आपको ब्रैकेटेड पेस्ट की बिल्कुल भी परवाह नहीं है, तो इसे शेल ए पर बंद कर दें, ताकि यह पहले स्थान पर कभी भी सक्षम न हो (@ jwd का जवाब)

  2. यदि आप शेल ए पर ब्रैकेटेड पेस्ट का उपयोग करना चाहते हैं, लेकिन शेल बी पर अक्षम करें, तो अपने .bashrc(@ उत्तर) में एस्केप सीक्वेंस जोड़ें

  3. ब्रैकेट पेस्ट का समर्थन करने के लिए शेल बी को अपग्रेड करें, इसलिए यह उन 0 ~ और 1 ~ वर्णों की ठीक से व्याख्या करता है।

साइड नोट: यदि आप GNU स्क्रीन का उपयोग कर रहे हैं, तो आपको स्क्रीन के printfबाहर उस कमांड को चलाने की आवश्यकता है । यह अंदर रहते हुए काम नहीं करता है।


धन्यवाद @rjh :) लेकिन मैंने कभी भी zsh का उपयोग नहीं किया है या आपके द्वारा वर्णित ssh के साथ कोई समस्या नहीं है। ऐसा लगता है कि कुछ साल पहले उबंटू पर गलत-कॉन्फ़िगर किया गया था।
Artemdevel
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.