终端为什么不显示新行?


16

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

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

甚至包裹在另一个外壳中

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

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

如何使它再次显示新行?(没有出口。)


强制转换为emacs备注:)
Dang Khoa

Answers:


36

尝试以下一项或两项:

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

ctrl+c是要明确你可能会在命令行中键入任何其他字符。

resetstty sane通常修复混乱的终端。阅读的手册页resetstty获取更多信息。

请注意,如果终端足够混乱,则可能甚至无法正常工作ctrl+c或无法enter按预期工作。还有其他输入字符的方法,但是它们涉及古老的黑暗魔法。在这种情况下,通常只需要关闭终端并启动另一个终端就容易了。

我对终端的内部运作方式的了解不足以解释其原因或方式。


4

它不是vi从stdin接受输入的预期用途。

无论如何,您可以使用

stty sane

无需重置终端。

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.