Ctrl-s terminal emülatörü asmak?


311

Vimdoc'da bir cümleyle karşılaştım:

Note: CTRL-S does not work on all terminals and might block
                further input, use CTRL-Q to get going again.

ve bu anahtar gerçekten de vim'i kapattı. Ben vim'in hatası olduğunu düşünüyordum, çünkü C-s/ C-x C-siçinde emacs nox kullandığımda bir sorun yoktu . Ancak tam şimdi bir manpage okurken ve tuşuna bastığımda Ctrl-sda kilitleniyor man ( lessPAGER olarak belirliyorum ).

Birisi bana neler olduğunu söyleyebilir mi?

Terminal taklitleri olan xtermve lxterminalve ttybu sorunu vardır. Ve a Ctrl+ q, tüm durumlarda işlemi tekrar tekrar başlatır.


6
Bu aptalca bir soru olabilir, ancak sorunuzda neler denediğinizi söylemediniz. C-qKaydırmayı yeniden etkinleştirmeyi denediniz , değil mi?
h3rrmiller

3
@ h3rrmiller evet, doğru. Ancak ctrl-sneden sürecin askıda kalmasına neden olduğunu bilmek istiyorum .
Hongxu Chen,

Orada kaydırma kilidi anahtarla klavyeler olmadan önce C-sve C-qeski günleri "kaydırma kilidi geçiş" idi. Eğer ekleyerek bu işlevi devre dışı bırakabilir stty ixanyve stty ixoff -ixonsizin için.bashrc
h3rrmiller

2
Bu, günümüzde terminal emülatörlerinde aptal bir tarihsel ayardır; terminalinizi nasıl düzelteceğinize ilişkin bu soruya bakın .
Ingo Karkat

1
@IngoKarkat aptalca söyleyemem ... Hala zaman zaman kullanıyorum
h3rrmiller 11:13

Yanıtlar:


361

Bu özelliğe Yazılım Akış Kontrolü (XON / XOFF akış kontrolü) denir.

Veri bağlantısının bir ucu (bu durumda terminal emülatörü) daha fazla veri alamazsa (tampon doluysa veya doluysa veya kullanıcı gönderirse C-s) daha fazla veri alamaz . veri bağlantısı "XON" sinyali alıncaya kadar duraklatmak için.

Kaputun altında olan şey "XOFF", çekirdekteki TTY sürücüsüne, TTY sürücüsüne "XON" gönderilinceye kadar veri gönderme işlemini (bir filmi duraklatma gibi) uyku durumuna getirme talimatı veriyor. ilk etapta hiç durmamış gibi süreci sürdürmek için çekirdek.

C-sterminal kaydırma kilidini etkinleştirir. Bu da terminalinizin kaymasını önler (Yazılımın çıkışını duraklatmak için bir "XOFF" sinyali göndererek).

C-qkaydırma kilidini devre dışı bırakır. Terminal kaydırmaya devam etme (Yazılımın çıkışını devam ettirmek için bir "XON" sinyali göndererek).

Bu özellik eskidir (terminaller çok yavaş olduğunda ve kaydırmaya izin vermediğinde geri döndü) ve varsayılan olarak etkindir.

Bu özelliği devre dışı bırakmak için şunlardan birine ~/.bash_profileveya şunlara ihtiyacınız vardır ~/.bashrc:

stty -ixon

10
Aslında bence 60'ların olmasa bile, en geç 70'lere kadar gittiğini düşünüyorum.
Keith,

Ancak Ubuntu 16.04 üzerinde çalışmıyor gibi görünüyor.
Robert

3
"stty -ixon" <----- bu, internette geçen hafta okuduğum en önemli şeylerden biri. teşekkür ederim.
Brad P.

Aslında, bunun geçmişi 80'li yıllardan birkaç on yıl önce başlıyor. Bkz . TTY parçalandı .
RoboAlex

25

Senaryomun sonuna şunu .bashrcekledim:

#so as not to be disturbed by Ctrl-S ctrl-Q in terminals:
stty -ixon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.