たとえば、次のコマンドを入力すると、
echo line | (cat >/dev/null; vi)
別のシェルに包まれても
sh -c 'echo line | (cat >/dev/null; vi)'
vimから返されると、キャリッジリターンは表示されなくなります。
新しい行を再度表示するにはどうすればよいですか? (出口なし。)
次のいずれかまたは両方を試してください。
ctrl+c
と入力してからreset
と入力し、enter
を押します。ctrl+c
と入力してからstty sane
と入力し、enter
を押します。ctrl+c
は、コマンドラインに入力した他の文字をクリアするためのものです。
reset
またはstty sane
は通常、台無しになった端末を修正します。詳細については、reset
およびstty
のマニュアルページを参照してください。
端末がめちゃくちゃになっていると、ctrl+c
やenter
でさえ期待どおりに動作しない可能性があることに注意してください。文字を入力する方法は他にもありますが、古代のダークマジックが関係しています。その場合、通常はターミナルを閉じて別のターミナルを起動する方が簡単です。
ターミナルの内部動作についての私の理解は、それがなぜまたはどのように行われるかを説明するほど深くはありません。
vi
がstdinから入力を取得することは意図されていません。
とにかく、あなたは再び改行を得ることができます
stty sane
端末をリセットせずに。