Você pode usar ahistory-search
funcionalidade do zle :
bindkey "^[[A" history-beginning-search-backward
bindkey "^[[B" history-beginning-search-forward
Isso liga Upe Down(ajusta suas próprias seqüências de escape) a uma pesquisa de histórico, para trás e para frente, com base no que já foi inserido no prompt.
Portanto, se você digitar "vim" e pressionar Up, o zsh irá retroceder no seu histórico apenas para os comandos que começam com "vim".
Além disso, você pode colocar o cursor no final da linha depois de selecionar o comando desejado no histórico do zsh, usando a função history-search-end (normalmente localizada em /usr/share/zsh/functions/Zle/
) e anexando -end
ao final de cada linha, da seguinte forma:
autoload -U history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey "^[[A" history-beginning-search-backward-end
bindkey "^[[B" history-beginning-search-forward-end
Outra opção útil é
history | grep
Atribua um alias, por exemplo
então você pode digitar
hg whatever
para procurar os comandos que você usou, por exemploEu coloquei esse alias nos meus arquivos de ponto.
fonte
hg
me lembra ... Ah, sim, Mercurial!Se você estiver usando oh-my-zsh , adicione
history-substring-search
àplugins=(...)
linha.Então adicione
em algum lugar abaixo da linha que lê
source $ZSH/oh-my-zsh.sh
. Salve e ative um novo terminal ou execute-osource ~/.zshrc
no terminal atual.Nota:
^[[A
é a sequência de escape da seta para cima no terminal que eu uso (gatinho) e muitos outros. Para fazer check-in no seu terminal de escolha, digiteshowkey -a
e pressione a tecla desejada para a qual deseja encontrar a sequência de escape.fonte
brew install zsh-history-substring-search
, verifiquei o readme do repositório para obter instruções, seguirei em frente e crie uma resposta que estou realmente feliz com o resultado.Você pode usar o script em https://github.com/zsh-users/zsh-history-substring-search
Onde você pode digitar qualquer parte de qualquer comando digitado anteriormente e pressionar as teclas Upe Downpara percorrer os comandos correspondentes.
fonte
Eu recomendo usar
"$terminfo[kcuu1]"
ou"$key[Up]"
não coisas codificadas como"^[[A"
que podem ou não funcionar em qualquer sistema específico.Confira
/etc/zsh/zshrc
mais chaves. Aqui está o que parece no meu sistema. Eu acho que asterminfo
chaves têm mais probabilidade de serem definidas.fonte
Que tal usar
zsh-autosuggestions
?A questão é que, para cada comando digitado neste plugin, você encontrará algumas sugestões que podem ser aceitas ou não. Experimente e nos dê algum feedback.
Sem plug-ins, podemos pressionar Ctrlrpara realizar uma pesquisa reversa no histórico, assim que você começar a digitar os comandos correspondentes aparecerão como sugestões.
fonte
Eu uso o plugin do modo vi . E então no meu ~ / .zshrc eu tenho as seguintes ligações:
Que me permite usar o
^P
e^N
como a busca para trás e para a frente normal, se eu não entrar em qualquer texto, e como filtrada pesquisa se eu fizer.fonte
Concordo com a cheflo que a pesquisa "substring" é mais útil. Não posso comentar lá, então comecei uma nova resposta. Eu uso oh-my-zsh e adiciono "history-substring-search" aos plugins = (...) de ~ / .zshrc. Então fonte ~ / .zshrc. Não precisa adicionar mais nada. Use "bindkey" para verificar:
Mais tarde, você digita "para" e a seta para cima aparece "histórico" e "para" realçado (se você usou o comando "histórico" antes).
fonte
Em vez disso, você pode usar o zaw , que substitui completamente sua pesquisa por uma super pesquisa com várias palavras-chave muito melhor e soluciona seu problema - o histórico de pesquisas é apenas uma das coisas que o zaw pode pesquisar.
Pequena introdução / discussão aqui
fonte
Como uso oh-my-zsh e uso a solução de substring de joelostblom, James, modifico o arquivo .zshrc assim: (que na linha 13, localize a linha "source $ ZSH / oh-my-zsh.sh" e modifique o código ao seu redor.)
fonte
bindkey -v
irá quebrar ctrl-a, ctrl-e. Provavelmente todos os comandos ctrl.Resposta não-Oh-My-Zsh
Isso funcionou para mim (no macOS) para obter o histórico de substring facilmente acessível via seta para cima / para baixo. A ligação das teclas é sua.
O histórico de pesquisa de seqüências de caracteres é melhor do que apenas acessar comandos que começam com uma sequência. Isso é mais parecido com ctrl-r na maioria dos casos, aqueles sem globs ou correspondência de regex.
A partir das instruções em zsh-users / zsh-history-substring-search
Agora aproveitando isso completamente.
fonte