Olá a todos!
Nesta pequena e simples dica, mostrarei como habilitar a
busca incremental de comandos no terminal
GNU/Linux.
O que é busca incremental?
O próprio terminal já fornece uma busca parecida. É só teclar a combinação
Ctrl+r e digitar o comando que se deseja buscar. Assim, ele exibirá as últimas ocorrências do termo digitado.
Mas a busca incremental de que falo, é muito mais simples e útil.
Eu descobri este recurso utilizando o
Vim. Se corretamente habilitada (é só utilizar o parâmetro "set nocompatible" no
vimrc), para utilizar um comando do histórico, é só digitar o começo do comando e teclar seta pra cima/seta pra baixo para navegar nas ocorrências encontradas.
De tanto usar o Vim, eu acabei pegando a estranha mania* de, ao digitar algum comando no terminal, tentar completar utilizando a seta pra cima. É claro que não funciona, uma vez que a seta pra cima serve apenas para ir ao último comando digitado.
* Aliás, esta não é a única mania que se pega ao utilizar constantemente o
Vim/Gvim/vi. As mais frequentes são teclar
Esc toda vez que se acaba de digitar algo em qualquer lugar, ou tentar fechar a janela do terminal com um
:wq. (rsrs)
De tanto tentar completar um comando no terminal com a seta pra cima, pensei: "Deve existir alguma configuração que possa habilitar isso!".
Foi só pesquisar um pouco que encontrei:
Para habilitar, é só acrescentar:
"\e[A": history-search-backward
"\e[B": history-search-forward
"\e[C": forward-char
"\e[D": backward-char
... no final do arquivo
/etc/inputrc (assim, as mudanças surtirão efeito em todos os usuários) e fechar/abrir o terminal novamente.
Agora, para testar, basta começar a digitar um comando qualquer e teclar seta pra cima/seta pra baixo para navegar nas últimas ocorrências dele.
Por fim, para termos um histórico bem completo, basta aumentarmos a capacidade dele, acrescentando (ou editando) no arquivo
~/.bashrc:
export HISTSIZE=10000
Assim, o terminal irá armazenar os últimos 10.000 comandos digitados (o padrão é 500).
* Lembrando que este recurso só funciona se o seu
readline estiver no modo de compatibilidade com
Emacs (o que é o padrão).
Testado no
bash e
sh.
Referências
Dica também publicada no Mundo GNU:
Até a próxima!