2013-01-08 29 views
9

tôi có mã này để tô màu thiết bị đầu cuối của tôi:dòng Break trong PS1 terminal sửa chữa

export PS1="\e[1;30m\][\e[\e[1;30m\]\e[1;33m\] \[email protected]\H \[\e[1;32m\]\w\[\e[0m\] \e[1;30m\]]\n[\[ \e[1;31m\]\T\[\e[0m\]\e[1;30m\] ] > \e[37m\]" 

Nhưng tôi có một vấn đề, khi văn bản phải trong dòng mới nó ghi đè dòng đầu tiên, ai đó có thể giúp tôi sửa chữa điều này ?

Ví dụ: http://cl.ly/image/3P2p3N2b0T14

Cảm ơn bạn

Trả lời

12

Để cho bash để tìm ra bao nhiêu màn hình không gian của bạn nhanh chóng chiếm (và do đó nơi dòng lệnh thực sự bắt đầu), bạn phải kèm theo phi các phần in của dấu nhắc trong \[...\]. Chủ yếu, điều đó có nghĩa là các chuỗi thoát như \e[1;30m cần phải được viết là \[\e[1;30m\]. Bạn có một số thông báo của \[\] trong lời nhắc của bạn, nhưng chúng ở sai địa điểm, điều này khiến cho bash rất bối rối. Tìm tất cả các phần in và không in của dấu nhắc phức tạp như của bạn không phải là tầm thường, nhưng tôi nghĩ rằng điều này đúng:

export PS1='\[\e[1;30m[\e[\e[1;30m\e[1;33m\] \[email protected]\H \[\e[1;32m\]\w\[\e[0m\] \[\e[1;30m\]]\n[ \[\e[1;31m\]\T\[\e[0m\e[1;30m\] ] > \[\e[37m\]' 
+0

Tôi đã gặp phải vấn đề tương tự, cảm ơn bạn đã chỉ ra rằng bạn cần phải có phần không in được bao quanh trong '\ [' ... '\]' – pbojinov

+0

Rực rỡ - không bao quanh chuỗi thoát màu trong PS1 với '\ [' và '\]' khi bạn nói, vị trí con trỏ sẽ không đồng bộ khi sử dụng mũi tên lên để chọn lệnh trước đó trong lịch sử trình bao. –

Các vấn đề liên quan