我正在編寫一個列印彩色線條的程序,我用它做的越多,我發現自己就越能解決出現的換行問題。
這是一種用 php 寫的終端,提示符號如下:
$return = readline("\033[44m\033[1;37m{$this->text}>>\033[0m ");
如果我滾動歷史記錄,我的文本會減少 10 個字符,如果我輸入 21 個字符並刪除一個字符,它會清除整行並開始刪除上面一行中的字符。這是在 47 列寬的控制台上
如果我嘗試新增轉義符
$return = readline("\[\033[44m\033[1;37m\]{$this->text}>>\[\033[0m\] ");
然後它會列印括號...即使我添加雙反斜線。
\[\][timer]>>\[\]
我發現同樣的事情echo -e
,我真的不確定發生了什麼。
最後,如果我修改 PS1,它就可以正常工作。
[mike@crest ~]$ export PS1="\[\033[44m\033[1;37m\][timer]>>\[\033[0m\] "
[timer]>>
我在這裡缺少什麼?
答案1
根據http://mywiki.wooledge.org/BashFAQ/053checkwinsize
如果捲動命令歷史記錄,則可能需要該選項:
shopt -s checkwinsize