修复 Mac OS X 上的 bash 换行和退格显示错误?

修复 Mac OS X 上的 bash 换行和退格显示错误?

当我打开终端(在 Mac OS X 10.5.8 上)并输入一个长命令行时: 替代文本

...文本换行时不会转到下一行: 替代文本 替代文本

另外,有时当我键入命令然后按退格键(或向上箭头或 ^U)时: 替代文本

...整行并没有被删除,而且我无法在某个点之后进行退格: 替代文本 替代文本

这是一个已知的 bash 错误(在 Mac OS X 上)吗?有修复方法吗?

更新: 朱利亚诺是正确的,问题是由于错误地界定了 PS1 变量中的控制台代码序列而导致的。更改:

export PS1='\[\033[1;34m\]\$\]\033[0m\] '

...在我.bashrc的:

export PS1='\[\033[1;34m\]\$\[\033[0m\] '

...问题解决了。

答案1

该行为与在提示中包含控制台代码(更改颜色等)并且没有正确标记以便 bash 知道它们是不可见的一致。

首先,请执行以下操作:

PS1='\w\$ '

然后重试。如果问题解决了,那么我的怀疑是正确的。

\[每个控制台代码序列必须用 PS1 变量中的和分隔\]。它们告诉 bash,无论其中的内容是什么,都不会移动光标位置。请阅读 bash 手册以了解更多信息。

答案2

为了帮助生成经过清理的提示,请尝试http://www.kirsle.net/wizards/ps1.html这真是太棒了。不过要小心提示中的括号,它会试图转义它们或做其他事情。

相关内容