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.