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

相关内容