无法毫无问题地渲染 .bashrc PS1 配置

Gee*_*e_k 3 bash prompt

我基本上知道问题是什么,因为我需要\[...\]用作转义(非空格?)字符的方法,并允许 bash 正确计算提示的宽度。

但是,我无法解决所有问题,并且一直在使用反复试验,因为我不太明白我到底需要在哪里\[...\]放置所有东西。

STARTCOLOR='\[\e[0;31m\]'
ENDCOLOR='\[\e[0m\]'
BACKGROUND='\[\e[47m\]'
export PS1="$STARTCOLOR$BACKGROUND\u@\h \[\t\]$ENDCOLOR\w>\$?\$\]"
Run Code Online (Sandbox Code Playgroud)

是我正在使用的。现在唯一的问题似乎是,如果我使用箭头键滚动以前的命令太久\w>\$?\$\,我的 PS1 部分将消失。如果我在使用先前的命令前进后使用箭头键向后倒退,也会发生这种情况。

roa*_*ima 7

问题是您正在使用非打印标记来打印输出(\t- 时间戳)

STARTCOLOR='\[\e[0;31m\]'
ENDCOLOR='\[\e[0m\]'
BACKGROUND='\[\e[47m\]'
export PS1="$STARTCOLOR$BACKGROUND\u@\h \t$ENDCOLOR\w>\$?\$ "
Run Code Online (Sandbox Code Playgroud)

\[ ... \]只对周围的非打印字符序列,例如色码是。