Ctrl-s emula o emulador de terminal?

260

Eu encontrei uma sentença no vimdoc:

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

e essa chave realmente paira meu vim. Eu estava pensando que era culpa do vim, já que não houve problema quando eu usei C-s / C-x C-s no emacs nox. Contudo só agora quando eu estava lendo uma manpage e pressionei o Ctrl-s , ele trava man bem (estou definindo less como o PAGER).

Então alguém pode me dizer o que está acontecendo?

Os emuladores de terminal são xterm e lxterminal e tty também tem esse problema. E um Ctrl + q coloca o processo novamente em todos os casos.

    
por Hongxu Chen 11.04.2013 / 17:35

2 respostas

306

Esse recurso é chamado de controle de fluxo de software (controle de fluxo XON / XOFF)

Quando uma extremidade do link de dados (neste caso, o emulador de terminal) não puder receber mais nenhum dado (porque o buffer está cheio ou quase cheio ou o usuário envia C-s ) ele enviará um "XOFF" para diga ao final do envio do link de dados para fazer uma pausa até que o sinal "XON" seja recebido.

O que está acontecendo sob o capô é o "XOFF" está dizendo ao driver TTY no kernel para colocar o processo que está enviando dados para um estado de suspensão (como pausar um filme) até que o driver TTY receba um "XON" para dizer ao kernel para retomar o processo como se nunca tivesse sido parado em primeiro lugar.

C-s ativa o bloqueio de rolagem do terminal. Que impede o seu terminal de rolar (enviando um sinal "XOFF" para pausar a saída do software).

C-q desativa o bloqueio de rolagem. Retomando a rolagem do terminal (enviando um sinal "XON" para retomar a saída do software).

Esse recurso é legado (volta dos anos 80, quando os terminais eram muito lentos e não permitiam a rolagem) e é ativado por padrão.

Para desativar esse recurso, você precisa do seguinte em ~/.bash_profile ou ~/.bashrc :

stty -ixon
    
por 11.04.2013 / 18:23
19

No final do meu script .bashrc , adicionei:

#so as not to be disturbed by Ctrl-S ctrl-Q in terminals:
stty -ixon
    
por 11.04.2013 / 18:17