Estou feliz e realmente gosto do recurso Ctrlde Rpesquisa para trás do shell bash. Alguns dos meus colegas não gostam, pois às vezes é confuso. Eu os entendo. Se você inserir os caracteres errados, a posição atual no histórico estará em algum lugar no passado e você não encontrará as correspondências recentes.
Existe uma alternativa mais amigável para pesquisar para trás no histórico do shell?
Eu quero ficar com bash. Sugerir um shell alternativo não é uma resposta a essa pergunta.
O problema com a "posição perdida" é explicado aqui: Redefinir a posição de pesquisa do histórico do bash . Essas soluções funcionam. Isso mesmo. Mas a solução não é fácil e amigável de acordo com o meu ponto de vista. Essas soluções não são simples e diretas. São soluções do passado. No passado, o ser humano precisava aprender a maneira como o computador queria a entrada. Mas hoje as ferramentas devem aceitar a entrada de uma forma que seja fácil para o usuário.
Talvez alguém conheça um IDE de jetbrains como o PyCharm. Se você procurar por "foobar", você obterá as linhas que contêm "foo_bar". Isso é ótimo, isso é unix :-)
Estou usando o programa fuzzy finder FZF . Eu escrevi minhas próprias combinações de teclas e scripts de shell para utilizar o FZF como minha ferramenta de escolha para pesquisar inversamente o histórico de um shell Bash interativo. Sinta-se à vontade para copiar e colar o código do meu repositório Config GitHub.
~/.bashrc arquivo de configuração
~/.inputrc.fzf arquivo de configuração ##
script Bash executável fzf-history
script Bash de origem key-bindings.bash
Tiradas e ligeiramente adaptadas do arquivo de atalhos de teclado Bash do FZF, aqui estão os atalhos de teclas compatíveis com o modo Emacs para a pesquisa reversa do histórico do Bash com (não testado): Ctrl-R
grep blablabla ~/.bash_history
: você terá que definir o bash para salvar o histórico no arquivo após cada comando.Do meu
~/.bashrc
Você pode querer descobrir o que os comandos fazem e ajustar.Vale a pena, se você desabilitar o recurso stop/start do seu tty (que você provavelmente não usa muito), você pode mudar a direção da busca pressionando Control-S.
Quanto a essas combinações de teclas não serem "amigáveis ao usuário" ou intuitivas, elas são combinações de teclas do emacs.
emacs
não é para todos , não há nenhuma surpresa nisso (embora eu conheça secretários e outros indivíduos não tão pretensiosos que foram capazes de dominá-los em pouco tempo e sem muito barulho). É mais uma questão de cultura.McFly é outra opção. É muito fácil de instalar - você pode fazer isso
brew
ou apenas baixar o binário mais recente . Está escrito em Rust, então eles estão vinculados estaticamente. Nenhum absurdo de dependência.Em seguida, basta adicionar isso ao seu
.bashrc
/.zshrc
:Ele oferece uma interface de usuário em tela cheia classificada de alguma maneira inteligente.
FZF vem com suporte para bash (também zsh & fish).
A resposta do @Tim Freske descreve suas modificações para a combinação de teclas no estilo vi.
As associações de teclas padrão são no estilo emacs. O que até substitui o Ctrl- rcomportamento para encontrar fuzzy sem perder posição. Eles podem não estar habilitados por padrão. Para habilitá-los, adicione isso a
.bashrc
:(Se isso não funcionar, faça
apt-cache show fzf
e encontre...fzf/README...
o arquivo, ele lista os comandos para bash, zsh, fish e vim)