Saya menemukan sebuah kalimat di vimdoc:
Note: CTRL-S does not work on all terminals and might block
further input, use CTRL-Q to get going again.
dan kunci ini memang menggantung vim saya. Saya berpikir bahwa itu adalah kesalahan vim, karena tidak ada masalah ketika saya menggunakan C-s
/ C-x C-s
di emacs nox. Namun baru saja ketika saya membaca halaman manual dan menekan Ctrl-s
, itu hang man
juga (saya menetapkan less
sebagai PAGER).
Jadi bisakah seseorang memberi tahu saya apa yang terjadi?
Emulator terminal adalah xterm
dan lxterminal
, dan tty
juga memiliki masalah ini. Dan tanda Ctrl+ qmenempatkan proses kembali dengan benar dalam semua kasus.
C-q
mengaktifkan kembali pengguliran, bukan?ctrl-s
menyebabkan proses untuk menggantung.C-s
danC-q
dulu "gulir kunci beralih". Anda dapat menonaktifkan fungsi ini dengan menambahkanstty ixany
danstty ixoff -ixon
ke.bashrc
Jawaban:
Fitur ini disebut Software Flow Control (kontrol aliran XON / XOFF)
Ketika salah satu ujung tautan data (dalam hal ini terminal emulator) tidak dapat menerima data lagi (karena buffer penuh atau hampir penuh atau pengguna mengirim
C-s
) itu akan mengirim "XOFF" untuk memberi tahu akhir pengiriman tautan data untuk berhenti sementara sampai sinyal "XON" diterima.Apa yang terjadi di bawah tenda adalah "XOFF" memberi tahu driver TTY di kernel untuk menempatkan proses yang mengirim data ke kondisi tidur (seperti menjeda film) sampai driver TTY dikirim "XON" untuk memberitahu kernel untuk melanjutkan proses seolah-olah tidak pernah berhenti di tempat pertama.
C-s
mengaktifkan kunci gulir terminal. Yang mencegah terminal Anda dari bergulir (Dengan mengirim sinyal "XOFF" untuk menjeda output perangkat lunak).C-q
menonaktifkan kunci gulir. Melanjutkan pengguliran terminal (Dengan mengirim sinyal "XON" untuk melanjutkan output perangkat lunak).Fitur ini adalah warisan (kembali ketika terminal sangat lambat dan tidak memungkinkan pengguliran) dan diaktifkan secara default.
Untuk menonaktifkan fitur ini, Anda memerlukan yang berikut di salah satu
~/.bash_profile
atau~/.bashrc
:sumber
Di akhir
.bashrc
skrip saya, saya telah menambahkan:sumber