2013-07-02 8 views
11

अगर मैं अपने आदेश संकेत की तरह सेट करें: के बाद और सब कुछबुरा कर्सर की स्थिति में एक पार्टी शीघ्र परिणाम जब याद करने के लिए एएनएसआई रंग भागने दृश्यों को जोड़ने/संपादन आदेश

export PS1='\033[0;33m[\[email protected]\h \w]\$ \033[00m' 

शीघ्र का रंग पीला हो जाएगा ' $ 'वर्ण डिफ़ॉल्ट टर्मिनल रंग होगा। मैं यही उम्मीद करता हूं। हालांकि, अगर मुझे कमांड लाइन याद आती है और इसे संपादित करने का प्रयास किया जाता है, तो कर्सर को ले जाया जाता है - या तो ऊपर एरो/Ctrl-A (set -o emacs) या ESC K (set -o vi) यदि कमांड लाइन मैं कोशिश कर रहा हूं संपादन काफी लंबा है, कर्सर कमांड की शुरुआत में स्थित नहीं है। या तो Ctrl-A (set -o emacs) या^(set -o vi) टाइप करना कर्सर को स्क्रीन पर याद की गई रेखा की शुरुआत के रूप में नहीं देख रहा है। इसी तरह, कर्सर को लाइन के अंत में (Ctrl-E या $, निर्भर करता है) परिणाम देने का प्रयास करते हुए परिणामस्वरूप इसे लाइन के अंत में दिखाई देने वाले कई वर्णों को रखा गया है। ऐसा लगता है कि बैश को बचने वाले पात्रों द्वारा भ्रमित हो रहा है जिसे मैंने प्रॉम्प्ट में जोड़ा है। क्या यह कुछ ऐसा है जो मुझे सौदा करना होगा, जब मैं याद की गई रेखाओं को संपादित करना चाहता हूं, तो मेरे संकेत को एक मोनोक्रोमैटिक में बदलना, या रंगीन संकेत के साथ याद किए गए आदेशों के संपादन को सही ढंग से अनुमति देने के लिए बाश प्राप्त करने का कोई तरीका है?

उत्तर

17

आप ताकि bash जानता है उन्हें शीघ्र की लंबाई की गणना करते समय की अनदेखी करने के \[ ... \] में गैर-मुद्रण वर्ण संलग्न करने की जरूरत है:

export PS1='\[\033[0;33m\][\[email protected]\h \w]\$ \[\033[00m\]' 
+0

खैर कि निश्चित रूप से काफी सरल था - धन्यवाद – Xaq

संबंधित मुद्दे