Linux:着色 bash 提示会中断回车

Abo*_*nec 33 terminal bash bashrc ps1 ubuntu-11.10

当我尝试bash像这样为提示着色时:

export PS1="\e[0;31m[\u@\h \W]\$ \e[m "
Run Code Online (Sandbox Code Playgroud)

它会中断回车(而不是在行已满时转到新行,而是从同一行开始并擦除输入文本)。

如果我删除颜色序列它工作正常。
我使用 Ubuntu 11.10 和终端(guake 也有同样的错误)。

use*_*686 57

您必须在\[和之间包装所有转义序列\],以便 'readline' 正确计算提示的可见长度。如果没有它们,'readline' 会认为提示比实际长,并且不知道文本何时到达边距。

PS1=" \[ \e[;31m \] [\u@\h \W]\$ \[ \e[m \] "

  • 万分感谢!!我试图在官方文档中找到一些关于它的文档,但找不到——“股票”颜色提示确实使用了这个“技巧”,我一开始很难弄清楚它到底是做什么的,所以感谢你清除它向上 --- 顺便说一句,我确实在第 684 行附近的“man readline 3”中找到了文档来源,它说对于那些想知道有关此文档的位置的人来说,这实际上称为“skip-csi-sequence”。我不认为如果没有你指向我 readline(3) 我不会找到它,即使我之前知道它 - 未能建立连接。 (4认同)
  • @osirisgothra:文档实际上是在谈论不同的事情——`skip-csi-sequence` 旨在抑制由特殊键生成的 **input** 序列。 (2认同)