Zsh: faça a seta para cima pular comandos idênticos

10

Na maioria dos shells do Unix, a tecla de seta para cima substitui o comando que está sendo editado pelo comando anterior no histórico. A história pode ser visto usando o comando history.

pode ser pressionado mais de uma vez para subir na história.

Minha pergunta é:

Como posso configurar meu shell para ignorar todos os comandos idênticos ao atual?

De fato, muitas vezes eu entro muitos makeseguidos. Quando quero inserir novamente (ou modificar um pouco) um comando mais antigo, tenho que pressionar muitas vezes apenas para pular todos os makecomandos.

Sei que está longe de ser a única dica que aumenta a produtividade do shell.

bônus:

  • dê uma configuração funcionando para o shell Bash.
  • preservar o histórico (saber que você digitou um comando várias vezes seguidas pode ser útil)
Gabriel Devillers
fonte

Respostas:

15

Para o zsh, coloque isso em sua configuração:

setopt histignoredups

O que ele faz, ignorará as entradas duplicadas do histórico durante a pesquisa.

A configuração equivalente para bash é

HISTCONTROL=$HISTCONTROL:ignoredups
Martin Sugioarto
fonte
1
graças, setopt histignoredupsfaz o trabalho, mas também duplicado suprimir da história
Gabriel Devillers
Sim, exatamente. Na maioria dos casos, é isso que você deseja. Quando você vê uma sugestão e não a deseja, não deseja sugeri-la novamente. Ele não exclui duplicatas do histórico.
Martin Sugioarto 21/09/16
Você está certo, mas eu quis dizer: duplicatas futuras não serão adicionadas ao histórico.
Gabriel Devillers
Eles são adicionados, caso contrário, a outra opção chamada histexpiredupsfirstque eu também uso não faria sentido. Faz duplicatas expirar primeiro antes de olhar para a idade. (Eu estou falando sobre zsh aqui)
Martin Sugioarto