Bagaimana cara mencairkan setelah tidak sengaja menekan Ctrl-S di terminal?


728

Ini adalah situasi yang cukup sering terjadi pada saya: setelah saya tekan (dengan maksud berbeda) Ctrl-Sdi terminal, interaksi (input atau output) dengan itu dibekukan. Mungkin semacam "kunci gulir" atau apa pun.

Bagaimana saya mencairkan terminal setelah ini?

(Kali ini, saya telah bekerja dengan apt-shellbagian bashdalam - urxvttidak yakin yang mana dari mereka yang bertanggung jawab untuk penanganan khusus Ctrl-S: Saya sedang mencari riwayat perintah dengan mundur C-r, seperti biasa untuk membaca, tapi kemudian saya ingin kembali "kembali "Maju melalui sejarah dengan yang biasa - setidaknya di Emacs - C-s( 1 , 2 , 3 ), tetapi itu menyebabkan terminal membeku. Nah, bergulir / paging untuk melihat hal-hal masa lalu masih bekerja di terminal, tetapi tidak ada interaksi dengan proses yang berjalan di sana.)


23
Saya sedang bekerja vimdan saya menekan Ctrl-S untuk menyimpan suntingan saya. Uh-ohXD
ADTC

4
Mengapa itu ada di tempat pertama?
neverMind9

Jawaban:


861

Ctrl-Q

Untuk menonaktifkan ini sama sekali, masukkan stty -ixonskrip startup. Untuk mengizinkan kunci apa saja agar semuanya mengalir kembali, gunakan stty ixany.

ps: Bukan terminal atau shell yang melakukan ini, tetapi driver terminal OS.


8
Terima kasih! BTW, di sana mereka menyarankan Ctrl-C; apakah itu bekerja juga? (Dan di tempat lain , mereka menyarankan Ctrl-Q, sama seperti kamu.)
imz - Ivan Zakharyaschev

23
Ctrl-C berfungsi, tetapi juga mengirimkan sinyal interupsi, yang biasanya tidak diinginkan. (Btw, tombol-tombol yang digunakan untuk hal-hal ini semuanya dapat dikonfigurasi melalui stty.)
ak2

2
Saya ingat mencoba kombinasi ini di Apple saya] [clone, dan itu berhasil juga di sana - Ctrl-Sdan kemudian Ctrl-Qmelanjutkan.
sashoalm

19
TERIMA KASIH TUHAN !! Ini telah menjadi sesuatu yang menggangguku selama bertahun-tahun. Tidak yakin mengapa VIM tidak menerapkan ini sebagai pintasan asli untuk menyimpan, bukan apa pun yang dilakukannya. Baik untuk mengetahui ada jalan keluar dari penjara yang merupakan layar VIM beku karena penggunaan alami CTRL + S (simpan pintasan) yang berlaku di hampir semua aplikasi KECUALI VIM.
Kraang Prime

8
@SanuelJackson Ctrl-S "save shortcut" berlaku di hampir semua aplikasi DESKTOP KECUALI vim. Dan Kecuali Emacs. Dan Nano. Dan setiap "aplikasi" lain yang dapat Anda jalankan di terminal, persis karena itu sudah digunakan oleh terminal untuk kontrol aliran. Itu alasan yang sama Anda tidak akan menemukan aplikasi Linux Desktop menggunakan pintasan Ctrl-Alt-FN: karena mereka sudah digunakan oleh sistem.
gerlos

383

Ctrl- Qmemang jawabannya. Saya pikir saya akan melemparkan sedikit sejarah ini yang terlalu panjang untuk masuk ke dalam margin jawaban yang benar ak2 .

Kembali di zaman kegelapan, terminal adalah peralatan besar yang terhubung ke perangkat jarak jauh (awalnya terminal lain karena teletype jauh lebih mudah untuk belajar beroperasi daripada kunci telegraf) melalui kabel panjang atau melalui saluran telepon dengan modem. Pada saat Unix berkembang, kode ASCII sudah mapan (meskipun kode EBCDIC yang bersaing dari IBM masih merupakan kekuatan yang harus diperhitungkan).

Terminal yang paling awal menyimpan catatan cetak dari setiap karakter yang diterima. Selama karakter datang tidak lebih cepat daripada print head bisa mengetiknya, setidaknya. Tetapi begitu terminal berbasis CRT memungkinkan, masalahnya muncul bahwa hanya sekitar 25 baris yang sesuai dengan CRT, dan 25 baris 80 karakter mewakili RAM yang cukup sehingga tidak ada yang berpikir serius tentang menyediakan lebih banyak RAM untuk karakter yang telah menggulir ke atas. layar.

Jadi, beberapa konvensi diperlukan untuk memberi sinyal bahwa pihak pengirim harus berhenti untuk membiarkan pembaca mengejar ketinggalan.

Kode ASCII 7-bit memiliki 33 titik kode yang ditujukan untuk mengontrol karakter (0 hingga 31 dan 127). Beberapa dari mereka memiliki tujuan yang benar-benar mapan, seperti NUL(kosong pemimpin pita kertas untuk threading, kesenjangan, dan splices), DEL( "dicoret" karakter pada pita kertas yang ditunjukkan oleh meninju semua tujuh lubang), BEL(ding!), CR, LF, Dan TAB. Tetapi empat didefinisikan secara eksplisit untuk mengendalikan perangkat terminal itu sendiri ( DC1untuk DC4alias Ctrl + Q, Ctrl + R, Ctrl + S dan Ctrl + T).

Dugaan terbaik saya adalah bahwa beberapa insinyur berpikir bahwa (seperti mnemonik pergi), "S" untuk "Stop" dan "Q" untuk "Lanjutkan" tidak terlalu buruk, dan ditugaskan DC3untuk berarti "tolong berhenti mengirim" dan DC1berarti "ok , lanjutkan mengirim sekarang ".

Bahkan konvensi itu sudah mapan pada saat Unix meninggalkan sarang di Bell Labs untuk pergi ke dunia.

Konvensi ini dikenal sebagai kontrol aliran perangkat lunak, dan sangat umum di perangkat serial nyata. Ini tidak mudah untuk diimplementasikan dengan benar, karena mencegah penggunaan salah satu dari karakter-karakter itu untuk tujuan lain di saluran komunikasi, dan sinyal Stop harus ditangani terlebih dahulu dari setiap karakter yang diterima yang tertunda untuk menghindari pengiriman lebih dari yang dapat diterima penerima menangani.

Jika praktis, menggunakan sinyal tambahan keluar dari aliran data serial untuk kontrol aliran jauh lebih disukai. Pada koneksi kabel langsung yang mampu menggunakan kabel sinyal tambahan, Anda akan menemukan jabat tangan perangkat keras yang digunakan, yang membebaskan karakter tersebut untuk penggunaan lainnya.

Tentu saja, jendela terminal saat ini tidak menggunakan port serial fisik yang sebenarnya, memiliki bilah gulir, dan tidak benar-benar memerlukan perangkat lunak sama sekali. Tetapi konvensi itu tetap ada.

Saya ingat klaim bahwa Richard Stallman menerima keluhan tentang pemetaannya Ctrl + S untuk pencarian tambahan dalam rilis pertama emacs, dan bahwa ia agak tidak simpatik kepada setiap pengguna yang harus bergantung pada 7-bit, koneksi aliran terkontrol perangkat lunak.


2
Terima kasih .. sangat menarik ... Saya sudah bertanya-tanya: Mengapa ada orang yang memilih untuk Lanjutkan proses dengan "Q" yang biasanya digunakan (sekarang) untuk Berhenti ... Pengelompokan QRST menjelaskannya .....
Peter.O

13
Terima kasih banyak untuk sedikit sejarah itu. Saya baru-baru ini menonaktifkan kontrol aliran secara default di terminal emulator yang saya pertahankan, tetapi harus mengaktifkannya kembali dengan cepat setelah protes vokal dari Unix tradisionalis yang masih menggunakannya. Saya mengatur bit ixany sebagai gantinya, jadi setidaknya orang yang menekan ^ S tanpa tahu tentang ^ Q tidak terjebak.
ak2

3
@RBerteig Saya mengalami sesuatu yang mirip dengan belajar tentang backspace dan menghapus. Backspace secara resmi ^ H dan hapus adalah ^? Beberapa orang seperti pengembang Emacs (Stallman lagi?) Ingin tersedia untuk tujuan umum seperti pintasan seperti Bantuan. Urutan melarikan diri ^ [[3 ~ atau sesuatu seperti itu dibuat untuk menggantikan ^? dan backspace sekarang menjadi karakter hapus lama ^ ?. Bahkan, saya telah melihat ncurses secara khusus ditambal pada distro Linux untuk memetakan ulang kunci mereka dalam terminfo sedangkan ncurses di FreeBSD tidak ditambal menyebabkan beberapa kebingungan yang mengganggu menyebabkan backspace tidak berfungsi.
penguin359

23
Saya sering bertanya-tanya mengapa DEL memiliki kode 127 daripada dikelompokkan dengan karakter kontrol lainnya, sampai saya pertama kali bermain dengan beberapa pita kertas dan ASR33. Setelah saya menyadari bahwa itu memiliki efek meninju semua lubang, yang berarti itu bisa menjadi hal yang berlebihan pada karakter yang sebelumnya ditinju untuk menghapusnya, itu masuk akal.
RBerteig

3
@SanuelJackson Sudah beberapa waktu sejak saya melihat dari dekat, tetapi vimrc default yang dikirimkan dengan windows telah memetakan <Cs> ke ": update" selama bertahun-tahun. Saya juga cukup yakin saya pernah melihatnya di beberapa distro untuk gvim di masa lalu juga. Jika Anda menggunakan vim di terminal, riwayat ini masih sangat relevan. Emulator terminal modern masih menerapkan kunci kontrol aliran, jadi meskipun vim memetakannya, ia tidak akan pernah melihatnya kecuali setiap pengguna keluar dari jalan mereka untuk menonaktifkan kontrol aliran seperti dijelaskan dalam jawaban yang diterima.
Drew
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.