为什么终端不显示新行?

为什么终端不显示新行?

例如,当我输入以下命令时,

echo line | (cat >/dev/null; vi)

即使被包裹在另一个壳里,

sh -c 'echo line | (cat >/dev/null; vi)'

并从 Vim 返回,现在它不再显示回车符。

我怎样才能让它再次显示新行?(无需退出。)

答案1

尝试以下一个或两个:

  • 输入ctrl+c,然后输入reset,然后按enter
  • 输入ctrl+c,然后输入stty sane,然后按enter

ctrl+c是为了清除您可能在命令行中输入的任何其他字符。

resetstty sane通常可以修复混乱的终端。请阅读reset和的手册页stty以了解更多信息。

请注意,如果终端太乱,那么它可能无法ctrl+center预期工作。还有其他方法可以输入字符,但它们涉及古老的黑暗魔法。在这种情况下,通常更容易关闭终端并启动另一个终端。

我对终端内部工作原理的理解还不够深入,无法解释它为什么或如何做到这一点。

答案2

它并非用于vi从 stdin 获取输入。

无论如何,你可以再次使用

stty sane

无需重置终端。

相关内容