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)

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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.