【发布时间】:2013-12-20 05:52:40
【问题描述】:
我在我的 Windows 7 机器上安装了 cygwin,我遇到了一个问题,当我键入命令时,它偶尔会被回绕到同一行,删除 bash 提示符。 这里是一个例子:
有问题的命令是命令“201”(从底部算起 4 行)。我包括了其他的上下文。
我输入的命令文本是
git commit -m "Forced LF line endings."
(注意:我主要使用 git 命令发布此内容,但任何命令都会出现问题。我还没有注意到模式。)
它跳到行首并开始覆盖我的提示。
当我按下向上箭头(查看历史记录)时,结果更奇怪:
(注意光标在命令末尾之后有很多字符。) 当我尝试从该位置退格光标时,我只能返回这么远:
然后,当我从该退格行进入历史记录时,我得到:
命令从显示的文本末尾开始。(这对于整个历史记录都是一致的)但是当我在历史记录中上升到错误的git commit ... 时,它会显示为之前对覆盖的文本进行了处理,但是当我经过它时,它会删除提示的一行,并以与之前相同的方式显示历史记录中的上一个条目(如图 2 所示)。
当我创建我的 PS1 变量时,我有这样奇怪的输出,但我已经关闭了我的括号和东西,不认为这是导致问题的原因。但是,如果您想查看我的.bash_profile(设置 PS1),请随时在GitHub 上查看。它真的很短。
我已尝试搜索该问题,但只能找到一些关于 xterm 中换行的 cygwin 电子邮件存档,但没有解决方案。
PS:在推送最新的.bash_profile时,为了链接它,我在输入git add .bash_profile并回车时再次遇到问题,它运行了命令但是将光标返回到开始相同的命令,而不是打印一个新的提示。
然后当我写另一个提交行时,它和第一个图像一样,但是 它把该行的其余部分涂黑(它包裹了该行,但覆盖了整行,而不仅仅是第一行几个字符。)
【问题讨论】:
-
我认为这是因为您没有正确编码提示符中的转义序列,因此 bash 对行上的剩余空间量感到困惑。
-
您能详细说明一下吗?我该如何解决这个问题?