Existe uma maneira de usar ctrl-r depois de digitar parte do comando no bash?

12

No bash o comando Ctrl + r é muito útil, eu digito Ctrl + r whatever e pesquisa meu histórico por comandos que contêm a palavra whatever . Mas se eu digitar whatever e perceber que gostaria de pesquisar essa palavra e pressionar Ctrl + r , nada acontece.

Existe uma maneira de pressionar uma tecla e fazer com que ela se comporte como se eu tivesse digitado Ctrl + r whatever em vez de whatever Ctrl + r ?

Eu tenho o seguinte no meu .inputrc :

"\C-p": history-search-backward

mas isso só funciona se o começo da linha for o mesmo.

    
por skeept 30.01.2012 / 16:41

2 respostas

12

Você pode pesquisar o histórico do bash usando o que você já digitou facilmente.

Suponha que você acabou de digitar curl -I http://superuser.com e esqueceu de digitar Ctrl + r primeiro:

$ curl -I http://superuser.com

Se você quiser fazer um i-search no seu histórico, vá para o início da linha primeiro ( Ctrl + a ), digite i-search ( Ctrl + r ) e digite Ctrl + y . Isso deve pesquisar usando o conteúdo de todo o texto que você já digitou:

(reverse-i-search)'curl -I http://superuser.com': curl -I http://superuser.com/faq

Alternativamente, você pode usar Ctrl + w ao invés de Ctrl + y para procurar usando apenas o primeiro palavra do texto que você acabou de digitar:

(reverse-i-search)'curl': curl -I http://superuser.com/faq

Vinculando tudo a uma única chave

Se você quiser fazer tudo isso em um pressionamento de tecla, você pode vincular uma única tecla a uma macro de teclado. Se você quiser usar, digamos, F12 run:

$ bind '"\e[24~":"\C-a\C-r\C-y"'

Isso durará a sessão.

Tornando permanente

Basta definir a macro no seu ~/.inputrc :

"\e[24~":"\C-a\C-r\C-y"

Note que aqui omitimos as aspas simples.

Você pode encontrar esta resposta útil.

    
por 04.11.2012 / 23:24
0

Salvar quatro avisos:

Evite um segundo Ctrl-R , adicionando ao seu .bashrc (ou ao seu .inputrc , se preferir):

bind '"\er":"\C-a\C-r\C-y\C-r"' # alt-r = ctr-a ctr-r ctr-y ctr-r

Isto mapeará ALT-R para CTR-A CTR-R CTR-Y CTR-R

Descrição:

  • ALT-R : a chave de ligação. Outra boa opção é \C-xr ( CTR-X CTR-R )
  • CTR-A : vai para o início da linha (memorizando o que está escrito)
  • CTR-R : inicia a pesquisa inversa
  • CTR-Y : cole o que CTR-A memorizou como parte da pesquisa
  • CTR-R : aciona a pesquisa inversa com os caracteres até o momento
por 26.11.2017 / 01:18