No manual da linha de leitura
# man readline
O seguinte descreve como pesquisar para trás e para frente.
reverse-search-history (C-r)
Search backward starting at the current line and moving `up' through the history as necessary. This is an incremental search.
forward-search-history (C-s)
Search forward starting at the current line and moving `down' through the history as necessary. This is an incremental search.
Quando pressiono ctrl+r e digito "apt-get", consigo fazer um histórico de pesquisa reversa tocando continuamente em ctrl+r. Mas então eu toco em ctrl+s e o terminal não avança. Estou fazendo algo incorreto?
Além disso, que chave o prefixo Meta "M-" representa?
Responder1
A sequência C-s
é retirada do driver do terminal, como você pode ver em
stty -a | grep '\^S'
Para liberar a sequência para uso pelo readline, defina a sequência do terminal de parada para alguma outra sequência, como por exemplo
stty stop ^J
ou remova-o completamente com
stty stop undef
Depois disso C-s
funcionaria no terminal fornecido.
Configure-o ~/.bashrc
para que funcione em todos os terminais.
A M-
sequência significa a Altchave, como já foi observado.
Responder2
Além de atribuir um caractere de 'parada' TTY diferente, conforme sugerido acima, você pode removê-lo completamente se não planeja usá-lo (eu costumo não fazê-lo), assim:
$ stty stop undef
Então readline pode usar control-s para pesquisa direta e você não obterá nenhum comportamento estranho devido à adição de um novo caractere de parada.
Responder3
forward-search-history (Cs) não funciona (embora esteja na página de manual).
'M-' representa o modificador da tecla Alt.
Responder4
Por favor, não use:
stty stop ^J
mas
stty stop ^P
ou qualquer outra coisa que ^J
cause grandes problemas com o ssh. (De qualquer forma, não sei por que.) Depois que fiz login Entere a barra invertida não funcionou. ou eu tive que digitar:
stty sane
export TERM=linux
antes eu queria digitar
ssh root@192...
então
stty stop ^P
resolveu os dois problemas ao mesmo tempo.