4

我的 bash 提示和换行行为有问题。如果我使用静态提示

export PS1="test$ ";   ### Works perfectly

我可以在提示符下输入长行,它们可以很好地换行。在历史记录中向上/向下滚动也可以正常工作。在使用动态提示时,例如:

export PS1="\u@\h(\W)$ ";    ### Long lines don't wrap at all

长队被打乱了。找到了使长行正确换行的修复程序。(http://hintsforums.macworld.com/showthread.php?t=17068)。

export PS1="\[\u@\h(\W)$ \]";  ### Long  lines wrap while typing, but not while scrolling up/down through previous commands

但是,当向上/向下提示历史记录时,行不会换行。我不知道如何用语言来解释这种行为,但我会尝试 - 当我向上(向上箭头键)时,最后一个命令的一半被吃掉,光标最终落在行将换行的位置之间的某个地方。

解决方案是什么?

我记得在许多 Linux 发行版上,动态提示开箱即用(这是在我的工作场所)。

问候,

J.P

4

1 回答 1

1

此问题可能与提示本身无关,而更可能与终端仿真器行为正常有关。

我使用这个 bash 提示符:

export PS1="\[\e[1;34m\]\u@\h:\W \t (\j) <\!>\n\$\[\e[0;00m\]"

它实际上跨两行显示,看起来完全像这样:

aks@anywhere:sh 01:43:27 (1) <1017>
$ env | grep PS
PS1=\[\e[1;34m\]\u@\h:\W \t (\j) <\!>\n\$\[\e[0;00m\]

并且使用 CTRL-N、CTRL-P 或箭头键,它与历史滚动完美配合。

我在 Terminal.app(在 MacBookPro 上)中使用 xterm-color。

于 2011-01-11T09:45:48.280 回答