光标出现在命令行的开头

光标出现在命令行的开头

PS1我在 Ubuntu 18.04.5 上指定时遇到困难。我在我的文件中使用以下代码.bashrc,结果看起来确切地正如它应该。

export PS1=$'\e[38;5;046m \u00AB\D{%y-%m-%d}\u00BB-[\D{%H:%M:%S}]-{\W}\e[1m\e[38;5;196m>\e[38;5;226m>\e[38;5;046m>\e[38;5;255m\e[0m '

在此输入图像描述

问题是我的光标位于开始命令行的而不是之后>>>。奇怪的是,如果我将终端设置为全屏,光标会出现在它应该出现的位置。我的定义有明显错误吗PS1

答案1

问题是它超过 80 个字符长,并且 bash 不完全知道如何解析转义序列。特别是,它认为正在发生换行,并尝试产生它或补偿它。

至于如何修复呢?将显式换行符放入 PS1 中。

我尝试附加\e7\eM\n\e8,似乎大部分都有效。如果您想知道:\e7是保存位置。 \eM是“反向索引”,基本上是反向换行。 \n是换行符,\e8是恢复位置。

相关内容