2013-07-02 16 views
11

komutları: sonra isteminin rengi sarı olacakhatırlatarak kötü imleç konumunda bir bash istemi sonuçlarına ANSI renk kaçış dizileri ekleme/düzenleme yüzden komuta gibi istemini ayarlarsanız

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

ve her şeyi ' $ 'karakteri varsayılan terminal rengi olacaktır. Beklediğim bu. Ancak, bir komut satırını geri çağırır ve onu düzenlemeye çalışırsam, imleç harekete geçmeye çalışırsam - ya imleç - UpArrow/Ctrl-A (set -o emacs) veya ESC K (set -o vi) Düzenleme yeterince uzun, imleç komutun başında konumlandırılmamış. Ctrl-A (set -o emacs) veya^(set -o vi) yazılması, imleci ekranda geri çağrılan satırın başlangıcı olarak gördüğüm şeye hareket ettirmez. Benzer şekilde, imleci satırın sonuna yerleştirmeye çalışmak (Ctrl-E veya $, bağlı), satırın sonu gibi görünen birkaç karakterin yerleştirilmesine neden olur. Bash, komut istemine eklediğim kaçış karakterlerinden dolayı kafam karışıyor gibi görünüyor. Bu sadece başa çıkmak zorunda kalacağım, geri çağrılan satırları düzenlemek istediğimde komut istemini tek renkli bir şekilde değiştiriyor mu, yoksa renkli bir komutla geri çağrılan komutların düzenlenmesine izin vermek için bash elde etmenin bir yolu var mı?

cevap

17

Sen istemi uzunluğunu hesaplarken bu yüzden bash bilir bunları görmezden \[ ... \] baskı olmayan karakterleri içine gerekir:

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

Well yeterince kesinlikle basitti - teşekkürler – Xaq

İlgili konular