我遇到了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
答案 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上)。