Masalah saya adalah bahwa Bash shell berhenti menampilkan karakter yang saya ketik di dalamnya. Itu membaca perintah sekalipun.
Saya telah menemukan masalah ini beberapa kali dan saya tidak mengerti apa penyebabnya. Saya tahu bagaimana menyelesaikannya, tapi saya benar-benar tidak suka ketika saya "voodooing" cara saya keluar dari masalah.
Saya akan menjelaskan dua cara saya menemukan masalah ini:
Saya sedang menjalankan proses tertentu, http://pythonpaste.org/script/ dan kadang-kadang ketika saya menghentikannya atau kontrol rusak diberikan kembali ke shell. Ketika saya kemudian pergi dan mengetik perintah ke shell, karakter yang saya ketik tidak muncul. Ketika saya tekan enter perintah yang disampaikan. Jadi misalnya:
- Saya mengetik "ls"
- Saya hanya melihat prompt kosong dan tidak lebih
- Aku tekan enter dan aku diberi daftar dari file, dengan kata lain: perintah yang dieksekusi
- ketika saya memberikan perintah "reset" shell mulai bekerja secara normal lagi
Cara kedua ini terjadi adalah ketika saya memberi perintah seperti ini:
$ grep foo * -l | xargs vim
Saya menggunakan grep untuk menemukan file yang memiliki pola tertentu dan kemudian saya ingin membuka semua file yang dihasilkan dari grep. Ini berfungsi seperti pesona (meskipun tidak secepat yang saya harapkan). Tetapi ketika saya keluar dari Vim, shell saya berhenti menunjukkan karakter yang saya ketik. Perintah reset menyelesaikan masalah.
Dugaan saya adalah bahwa kedua masalah memiliki alasan mendasar, tapi saya agak bingung bagaimana atau apa alasannya.
Mencari masalah ini sendiri bermasalah karena uraiannya agak kabur dan tidak memiliki istilah pencarian yang sulit untuk itu.
Sunting
Memberi
stty --all
perintah sesuai permintaan John S. Gruber memberikan output berikut (spasi putih diedit untuk dibaca)
speed 0 baud;
rows 53;
columns 186;
line = 0;
intr = <undef>;
quit = <undef>;
erase = <undef>;
kill = <undef>;
eof = <undef>;
eol = <undef>;
eol2 = <undef>;
swtch = <undef>;
start = <undef>;
stop = <undef>;
susp = <undef>;
rprnt = <undef>;
werase = <undef>;
lnext = <undef>;
flush = <undef>;
min = 0;
time = 0;
-parenb
-parodd cs8
-hupcl
-cstopb cread
-clocal
-crtscts
-ignbrk
-brkint
-ignpar
-parmrk
-inpck
-istrip
-inlcr
-igncr
-icrnl
-ixon
-ixoff
-iuclc
-ixany
-imaxbel
-iutf8
-opost
-olcuc
-ocrnl
-onlcr
-onocr
-onlret
-ofill
-ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig
-icanon
-iexten
-echo
-echoe
-echok
-echonl
-noflsh
-xcase
-tostop
-echoprt
-echoctl
-echoke
stty --allke pertanyaan saya. Terima kasih sebelumnya!
stty --alldan masukkan hasilnya dalam pertanyaan Anda. Echo adalah karakteristik tty yang dimatikan. Vim akan melakukan ini ketika sedang berjalan, dan itu akan menempatkan terminal dalam mode mentah juga. Ketika berhenti, seharusnya me-reset pengaturan terminal itu sendiri. Ketika vim sedang berjalan Anda tidak ingin mengulangiiperintah yang menempatkan editor ke mode penyisipan, misalnya. Pengaturan ini memberi tahu perangkat tty bagaimana seharusnya memproses apa yang Anda ketik. Sementara vim sedang berjalan, ia tetap memperhatikan apa yang harus digaungkan, dll.