为什么某些命令(通常很长)在bash和zsh中出现乱码?


10

很多时候,当我在bash或zsh中输入一个长命令(这是我肯定看到过的仅有的两个shell)时,光标会弯曲到我输入的字符串中间的某个地方,谁能解释这是为什么,对此是否可以做些什么?

我已经注意到,当我浏览外壳程序的历史记录(使用箭头键)时经常会发生这种情况,当我遇到一个较长的条目时,较长的新条目将与先前的条目混合在一起,使文本显示乱码。

我有一个带有短字符串的示例,我刚刚注意到:

历史记录包含:

mkdir sune1
mkdir sune2

如果我导航到mkdir sune1,然后再导航到,mkdir sune2我希望我的命令行是mkdir sune2(因为这是我现在导航到的命令行)-但是我却得到了mkdir1sune2

多年来,我经常注意到这一点,但永远不要让它困扰我太多,但我认为现在是时候改变了!那么,有什么想法吗?

Answers:


8

您的提示字符串可能错误地转义了非打印字符。如果您的提示中有颜色更改之类的内容,则需要放置\[\]转义终端转义序列,以便bash可以告诉他们它们不占用屏幕空间-否则会错误计算实际命令在屏幕上的位置,并对其进行更新在错误的地方。请参阅TLDP的本部分。在zsh中,把%{%}周围的转义序列。


我的提示中确实有颜色,我将尝试转义它们,或删除它们并查看是否有帮助。谢谢!
乔纳坦(Jonatan)2012

考虑使用zsh的颜色模块。它应该避免错误stackoverflow.com/questions/6159856/…–
Francisco
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.