मैक ओएस एक्स पर बैश लाइन-रैपिंग और बैकस्पेस डिस्प्ले बग के लिए फिक्स?


14

जब मैं टर्मिनल खोलता हूं (Mac OS X 10.5.8 पर) और एक लंबी कमांड लाइन टाइप करता हूं: वैकल्पिक शब्द

... पाठ अगली पंक्ति में नहीं जाता है जब वह चारों ओर लपेटता है: वैकल्पिक शब्द वैकल्पिक शब्द

इसके अलावा, कभी-कभी जब मैं एक कमांड टाइप करता हूं और तब बैकस्पेस (या अप-एरो या ^ यू): वैकल्पिक शब्द

... पूरी लाइन मिट नहीं रही है और मैं एक निश्चित बिंदु से परे बैकस्पेस नहीं कर सकता: वैकल्पिक शब्द वैकल्पिक शब्द

क्या यह एक ज्ञात बैश बग (मैक ओएस एक्स पर) है? क्या कोई फिक्स है?

अद्यतन: जूलियानो सही था, मेरे PS1 चर में कंसोल कोड अनुक्रम को गलत तरीके से परिसीमन करने के कारण समस्या हुई थी। बदल रहा है:

export PS1='\[\033[1;34m\]\$\]\033[0m\] '

... मेरे .bashrcमें:

export PS1='\[\033[1;34m\]\$\[\033[0m\] '

...समस्या का हल किया।


1
मैंने कभी देखा है एक टर्मिनल स्क्रीन के सबसे सुंदर स्क्रीन शॉट्स के लिए +1।
अगली सूचना तक रोक दिया गया।

1
आपके अपडेट में दिखाई गई दो कोड लाइनें समान हैं।
मैग्ने

अच्छी पकड़, @Magne। मुझे देखे हुए चार साल हो चुके हैं, इसलिए मुझे विशेष रूप से याद नहीं है, लेकिन मुझे लगता है कि "पहले" एक याद आ रही थी \]
डेरिल स्पिट्जर

वे समान नहीं हैं: 1 के \]बजाय
ओहद कोहेन

जवाबों:


19

व्यवहार आपके संकेत में सांत्वना कोड (रंग बदलने के लिए, आदि) के अनुरूप है और ठीक से अंकन नहीं है, ताकि बैश को पता चले कि वे अदृश्य हैं।

कुछ और करने से पहले, यह करें:

PS1='\w\$ '

और फिर दोबारा कोशिश करें। यदि समस्या हल हो गई है, तो मेरा संदेह सही है।

प्रत्येक कंसोल कोड अनुक्रम को PS1 चर के साथ \[और सीमांकित किया जाना चाहिए \]। वे मारते हैं कि जो कुछ भी है वह कर्सर की स्थिति को स्थानांतरित नहीं करता है। अधिक जानकारी के लिए बैश मैनुअल पढ़ें।


यही समस्या थी। धन्यवाद! मैं अपने प्रश्न को विवरण के साथ अपडेट करूंगा।
डेरिल स्पिट्जर नोव

और अगर यह समस्या हल नहीं होती है तो क्या होगा?
लेवेस्क

3

सैनिटाइज्ड प्रॉम्प्ट जेनरेट करने में मदद करने के लिए http://www.kirsle.net/wizards/ps1.html यह बहुत बढ़िया है। बस अपने संकेत में कोष्ठक के साथ सावधान रहें, यह उन्हें या कुछ और भागने की कोशिश करता है।


+1 जबकि @ जूलियानो का जवाब तकनीकी रूप से सही है, यहाँ यह लिंक वही है जो सही tputकमांड सेट करता है - जिसने नईलाइन, `` नईलाइन और अन्य "इतिहास + बैकस्पेसिंग" को ठीक किया है जो अन्य ANSI कोड का उपयोग करके ठीक नहीं कर सका।
एरिक डंकन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.