当我输入命令时,我的终端经常会循环输入

当我输入命令时,我的终端经常会循环输入

所以我遇到了一个非常奇怪的终端问题,它既影响物理登录会话,也影响 SSH 会话。基本上,终端大小是一些列。打印内容时,它会正确使用这个数量的列并在需要时换行。但是,当我输入实际命令时,它会使用一些较少的列。可能是 90 或 100 列。此时它会换行到当前行(而不是下一行)。如果我开始使用换行的命令退格,那么当它到达它换行的地方时,整个命令行将变为空白行。当我按向上箭头键重复上一个命令时也会发生这种情况。

这到底发生了什么?我该如何阻止它?

似乎建立一个新的终端会话通常可以修复此问题,但似乎没有其他方法可以解决reset

答案1

我不知道它是如何工作的,但运行stty sane通常可以帮我解决这类终端问题。

Shell 提示符

根据你问题的描述,我怀疑问题可能与你的提示有关。设置包含改变颜色等的 ANSI 转义序列的提示时必须小心。其中一些会导致 bash 认为提示占用的空间比实际占用的空间要多。请参阅此非常好的 Ask Ubuntu 答案

您必须告诉 Bash,该字符序列不应计入提示的长度,您可以通过将其括在(转义的)方括号中来实现\[ \]

我还建议使用 tput,而不是硬编码终端转义序列。请参阅Bash常见问题 53终端代码(ANSI/VT100)介绍了解更多信息。

答案2

在我看来,如果你已经这样做了reset,那么你真的没有什么可以做的了。咬紧牙关,开始一个新的终端会话。

这基本上发生在我错误地将cat二进制文件的内容传输到终端后。如果无法修复,那就无法修复了。

相关内容