Recentemente mudei para zsh, usandoRobbyRusselloh-my-zsh
. Antes disso eu usava o bash com muitas coisas personalizadas e só estou faltando uma coisa porque o zsh está tentando ser 'muito inteligente':
Se eu digitar git commit
e ↑o zsh passar por todos git
os comandos recentes. O que eu realmente quero é passar por todos os comandos que começam com git commit
(não apenas git
).
Como posso conseguir esse comportamento em (oh-my-)zsh?
Responder1
Encontrei a solução para o meu problema noDocumentação ZSH. Oh-my-zsh parece mapear as teclas ↑e ↓para algo como
bindkey '\e[A' history-search-backward
bindkey '\e[B' history-search-forward
O que produz o comportamento exato que descrevi acima. A documentação ZSH descreve o comportamento de history-search-backward
como
Pesquise para trás no histórico por uma linha que comece com oprimeira palavra no buffer.
O que eu queria era o seguinte mapeamento, que inseri no meu ~/.zshrc
:
bindkey '\e[A' history-beginning-search-backward
bindkey '\e[B' history-beginning-search-forward
O comportamento de history-beginning-search-backward
é o seguinte:
Pesquise uma linha no históricocomeçando com a linha atual até o cursor. Isso deixa o cursor em sua posição original.
Além disso, se \e[A
não funcionar com as setas para cima ou para baixo, pressione <ctrl-v><KEY (e.g., up arrow)>
outro terminal que forneça ^[OA
. Então você pode usar isso em vez de \e[A
. O processo é descrito aqui:http://zshwiki.org/home/zle/bindkeys
Responder2
Eu queria o mesmo comportamento para zsh com oh-my-zsh
plugin instalado e encontrado history-substring-search
.
Consegui o mesmo comportamento descrito acima adicionando o plugin ao meu ~/.zshrc
:
plugins=(git brew npm history-substring-search)
Acho que este plugin não existia quando esta questão foi levantada. Apenas uma maneira alternativa de conseguir a mesma coisa.