端末に新しい行が表示されないのはなぜですか?


15

たとえば、次のコマンドを入力すると、

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

別のシェルに包まれても

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

Vimから返されると、キャリッジリターンは表示されなくなります。

新しい行を再度表示するにはどうすればよいですか?(出口なし。)


強制的なスイッチからEmacsへの発言:)
ダンコア

回答:


34

次のいずれかまたは両方を試してください。

  • を入力してctrl+cからを入力しreset、を押しenterます。
  • を入力してctrl+cからを入力しstty sane、を押しenterます。

これctrl+cは、コマンドラインに入力した他の文字をクリアすることです。

resetまたはstty sane通常、台無しになった端末を修正します。resetおよびstty詳細については、manページを参照してください。

端末は十分に台無しにされている場合、それはないとしてもその可能性があることを注意ctrl+cまたはenter期待どおりに動作します。文字を入力する方法は他にもありますが、古代のダークマジックが関係しています。その場合、通常はターミナルを閉じて別のターミナルを起動する方が簡単です。

ターミナルの内部動作についての私の理解は、それがなぜまたはどのように行われるかを説明するほど深くはありません。


4

vistdinから入力を取得するための使用法ではありません。

とにかく、あなたは再び改行を得ることができます

stty sane

端末をリセットせずに。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.