Cygwin将文本重新包装到同一行,导致文本被覆盖

时间:2013-12-20 05:52:41

标签: bash cygwin xterm

我在我的Windows 7盒子上安装了cygwin,我遇到了一个问题,当我输入命令时,它偶尔会被包回到同一行,删除bash提示。这里是一个例子:

wrapping example

有问题的命令是命令“201”(从底部开始的4行)。我把其他人包括在内。

我输入的命令的文本是

git commit -m "Forced LF line endings."

注意:我发布的主要是git命令,但任何命令都会出现问题。我还没有注意到一个模式。

它跳转到行的开头并开始覆盖我的提示。

当我按下向上箭头(查看历史记录)时,结果甚至更奇怪:

enter image description here

(注意光标是命令末尾的许多字符。) 当我尝试从该位置退格光标时,我只能回到这一步:

enter image description here

然后当我从那个退格线进入历史时,我得到了这个:

enter image description here

该命令从显示的文本末尾开始。(这与整个历史记录一致)但是当我在历史记录中查找错误的git commit ...时,它会显示就像之前用覆盖的文本一样,但是当我经过它时,它会删除提示行,并以与之前相同的方式显示历史记录中的上一个条目(图像2) )。

当我创建我的PS1变量时,我有这样的奇数输出,但我已经关闭了括号和事物,并且不认为这导致了问题。但是,如果您希望我的.bash_profile(设置PS1)可以在GitHub上看到它。它真的很短。

我尝试过搜索这个问题,但只能找到一些有关xterm换行的cygwin电子邮件档案,但没有解决方案。

PS:当我推送最新的.bash_profile时,为了链接它,当我输入git add .bash_profile并按回车键时,我又遇到了问题,它运行了命令但是返回了光标指向同一命令的开头而不是打印新提示。 然后,当我写另一个提交行时,它与第一个图像的作用相同,但是它使行的其余部分变黑(它包裹了行,但覆盖了整行而不是第一行几个字符。)

2 个答案:

答案 0 :(得分:9)

请参阅http://manpages.ubuntu.com/manpages/lucid/man1/bash.1.html#contenttoc26

  

\ [

     

开始一系列非打印字符,可用于将终端控制序列嵌入提示中

     

\]

     

结束一系列非打印字符

如果您未在提示中附上非打印字符(例如颜色序列),则这些字符的长度将被计为提示长度的一部分,最终会导致您描述的症状。

答案 1 :(得分:2)

我不经常发生这种情况。如果是这样,我只需在cygwin终端输入'kill -WINCH $$'即可解决问题。 link to source