Como encaminhar o histórico de pesquisa com o comando reverse-i-search (ctrl + r)?

Como encaminhar o histórico de pesquisa com o comando reverse-i-search (ctrl + r)?

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-sfuncionaria no terminal fornecido.

Configure-o ~/.bashrcpara 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 ^Jcause 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.

informação relacionada