Mengapa terminal tidak akan menampilkan baris baru?

16

Misalnya, ketika saya mengetik perintah berikut,

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

bahkan dibungkus dengan cangkang lain,

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

dan kembali dari Vim, sekarang tidak akan menampilkan carriage return lagi.

Bagaimana saya bisa membuatnya agar menampilkan baris baru lagi? (Tanpa keluar.)

Xiè Jìléi
sumber
komentar wajib beralih ke emacs :)
Dang Khoa

Jawaban:

35

coba salah satu atau keduanya:

  • ketik ctrl+c, lalu ketik reset, lalu tekan enter.
  • ketik ctrl+c, lalu ketik stty sane, lalu tekan enter.

yang ctrl+cadalah untuk menghapus karakter lain yang mungkin telah mengetik pada command line.

resetatau stty sanebiasanya memperbaiki terminal yang berantakan. Baca halaman manual resetdan sttyuntuk informasi lebih lanjut.

Perhatikan bahwa jika terminal cukup kacau maka mungkin itu bahkan tidak ctrl+catau enterakan berfungsi seperti yang diharapkan. Masih ada metode lain untuk memasukkan karakter, tetapi mereka melibatkan sihir gelap kuno. Dalam hal ini, biasanya lebih mudah untuk hanya menutup terminal dan memulai yang lain.

Pemahaman saya tentang cara kerja terminal tidak cukup dalam untuk menjelaskan mengapa atau bagaimana hal itu terjadi.

lesmana
sumber
4

Ini bukan tujuan penggunaan untuk vimengambil input dari stdin.

Bagaimanapun, Anda bisa mendapatkan baris baru lagi dengan

stty sane

tanpa mengatur ulang terminal.

enzotib
sumber