这个问题是对这个问题的回答的跟进,关于在 XFCE 终端中更改用户输入提示的颜色:Ubuntu 终端 (Xfce): making input commands different font color from output text
由于我不允许在那里发表评论(至少 50 名声望),我不得不提出一个新问题。
在回答之后,我使用了以下命令:
PS1='\e[1;36m\u@\h \W]\$\e[0m '
这使格式与默认相同,但按预期将颜色更改为青色。
但是,我得到了一些非常奇怪的行为。有时光标会跳回输入行,有时它会显示不应该存在的旧文本。有时它会分成两行,以便我继续在上面的行上输入。例如:
说我想做:
$ cd /some/path/to/a/directory
但是当我输入它时,它变成了这样:
$ cd /some/pa/directoryath/to
如果我输入回车,它仍然会正确读取命令,只是显示错误。当它发生时,如果我尝试使用退格键,它会变成这样:
$ cd /some/pa/directoryath/to
$ cd /some/pa/directo
$ cd /some/pa -------- at this point I cannot erase anything else,
in the display some of the characters are still
lingering, but if I type enter there is nothing on the input line
另一个例子,假设我显示了以下内容:
$ ls
folder1 folder2 folder3 folder4
现在我想输入一些其他命令,那么可能会发生以下情况:
$ ls
folder1 folder2 folder3 folrectory
$ cd /some/path/to/a/di
再一次,如果我输入输入,输入被正确识别,但显示被搞砸了。
当我键入向上箭头以获取上一个命令时,或者当输入行接近窗口的右边缘时,此问题最常出现,但并非唯一。
您需要将终端转义序列括起来,并且只包含在 和 之间的
\[
那些\]
。请参阅
bash
的手册页中的“提示”部分。代替
你应该写
我测试并注意到您的提示也存在问题,它似乎过早地期望右边距并换行。
请试试这个,我用的
如果它有效,您可以将它放入您的 ~/.bashrc 中,至少用于交互式 shell。我用
决定何时使用它,您可以检查与您的设置匹配的内容。
statstring
编辑:在设置提示之前添加要创建的函数~/.bashrc