Bash换行和历史滚动

时间:2010-11-19 06:12:21

标签: bash scroll command-prompt xterm

我遇到了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发行版中,动态提示正常工作(这是在我的工作场所)。

的问候,

JP

1 个答案:

答案 0 :(得分: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中使用xterm-color(在MacBookPro上)。