我最近通过$PS1
变量修改了我的 Bash 提示,以便我可以有颜色。它在我的.bashrc
文件中:
PS1="\\[\e[0;32m[\h::\W] >>\e[m "
Run Code Online (Sandbox Code Playgroud)
现在,如果我输入一些东西然后必须退格来清除它,整个提示就会消失。如果我点击进入一个新的出现。
查看关于同一问题的这个问题,我似乎缺少一个右括号。不过,我不知道它会去哪里。
mik*_*erv 12
起初我认为反斜杠会在双引号内自我转义,这就是问题所在,但是,再想一想,"\\["
相当于'\['
所以情况并非如此 - 它会以这种方式工作。
但真正的问题是,readline
不知道有多少字符被绘制到屏幕上,有多少字符在终端转义时被截获。事实上,它可能认为根本没有打印任何提示,因为您的提示基本上由一个开引号的字符串组成。
因此,正如我在评论中指出的,您需要关闭序列。该\[
方法在提示中开始非打印转义序列 - 这样readline
可以跟踪屏幕上绘制了多少个字符。您还需要像这样结束它:
PS1='\[non-printing terminal escapes here\]'
man bash 2>/dev/null | grep '^ *\\\[' -A5
\[ begin a sequence of non-printing
characters, which could be used to
embed a terminal control sequence
into the prompt
\] end a sequence of non-printing char?
acters
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2619 次 |
最近记录: |