bash/php 中的換行問題

bash/php 中的換行問題

我正在編寫一個列印彩色線條的程序,我用它做的越多,我發現自己就越能解決出現的換行問題。

這是一種用 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

相關內容