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

10

No manual de readline

# 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 eu pressiono ctrl + r e digito "apt-get", eu posso fazer um histórico de pesquisa reversa tocando continuamente em ctrl + r. Mas então eu toquei em ctrl + seo terminal não avança. Estou fazendo algo incorreto?

Além disso, qual é a chave que o prefixo Meta "M-" representa?

    
por user784637 05.09.2011 / 07:38

6 respostas

14

A sequência C-s é obtida do driver do terminal, como você pode ver em

stty -a | grep '\^S'

Para liberar a sequência para uso pela linha de leitura, defina a seqüência do terminal de parada para 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.

Defina em ~/.bashrc para que funcione em todos os terminais.

A sequência M- significa a tecla Alt , como já foi observado.

    
por enzotib 05.09.2011 / 14:42
2

Além de atribuir um caractere diferente de 'parada' TTY como sugerido acima, você pode removê-lo completamente se não planeja usá-lo (eu não gosto), assim:

$ stty stop undef

Então readline pode usar control-s para buscar adiante e você não terá nenhum comportamento estranho devido a um novo caractere de parada sendo adicionado.

    
por ntnt 26.09.2014 / 08:26
1

forward-search-history (C-s) não funciona (embora esteja na página man).

'M-' representa o modificador de tecla Alt.

    
por Gödel 05.09.2011 / 07:56
0

Por favor, não use:

stty stop ^J

mas

stty stop ^P

ou qualquer outra coisa, pois ^J causa grandes problemas com o ssh. (Eu não sei porque de qualquer maneira.) Depois que eu entrei em Enter e as barras invertidas não estavam funcionando. ou eu tive que digitar:

stty sane 
export TERM=linux

antes que eu quisesse digitar

ssh root@192...

então

stty stop ^P

resolveu os dois problemas ao mesmo tempo.

    
por xerostomus 13.04.2014 / 14:44
0

Você pode desativar o controle de fluxo XON / XOFF:

stty -ixon

no seu ~ / .profile ou similar, então o Ctrl + S será reconhecido.

Exemplo

    
por Steven Penny 15.01.2017 / 17:48
0

Para alternar ao usar a pesquisa inversa (com o comando Ctrl-R):

  1. Abra seu arquivo .bashrc:
    sudo gedit ~/.bashrc

  2. adicione esta linha (a letra "f" pode ser substituída por outra ainda não usada pelo sistema)

    bind '"\C-f": forward-search-history' 
    
  3. Feche seu arquivo e atualize seu .bashrc (ou abra outro terminal) com o comando:
    source ~/.bashrc or . ~/.bashrc

AGORA VOCÊ PODE AVANÇAR NA HISTÓRIA COM O ATALHO: Ctrl + f

Trabalhando no Ubuntu 18.04 LTS

    
por Franklin TN 15.06.2018 / 19:09