zsh, seta para cima repete apenas comandos únicos?

21

Estou procurando uma configuração que permita que, ao pressionar a seta para cima, o zsh mostre os comandos editados recentemente. O problema é que eu só quero comandos únicos . Atualmente, se eu digitar echo "hello world"50 vezes, tenho que pressionar a seta para cima 50 vezes para obter o comando usado antes de digitar o comando echo. Isso é chato para dizer o mínimo.

Quaisquer pensamentos sobre qual configuração eu preciso ativar / desativar?

Lee Olayvar
fonte

Respostas:

23

HIST_IGNORE_ALL_DUPSjogará fora todas as correspondências anteriores do comando, o que pode ser confuso ao usar o histórico como um log do que você fez posteriormente.

Um ajuste mais próximo às suas necessidades é provavelmente a HIST_IGNORE_DUPSou até a HIST_FIND_NO_DUPSopção.

Veja man zshoptions | less -p History:

HIST_FIND_NO_DUPS: Ao procurar entradas de histórico no editor de linhas, não exiba duplicatas de uma linha encontrada anteriormente, mesmo que as duplicatas não sejam contíguas.

HIST_IGNORE_ALL_DUPS: se uma nova linha de comando adicionada à lista de histórico duplicar uma antiga, o comando mais antigo será removido da lista (mesmo que não seja o evento anterior).

HIST_IGNORE_DUPS: Não insira linhas de comando na lista do histórico se forem duplicatas do evento anterior.

peth
fonte
1
HIST_FIND_NO_DUPS é uma resposta melhor do que a minha, eu acho.
22611 Mikel
3

Não vejo como literalmente fazer isso apenas, mas se você definir a HIST_IGNORE_ALL_DUPSopção, apenas a versão mais recente de um comando será mantida no histórico, proporcionando o mesmo efeito.

Veja man zshoptionspara detalhes.

Mikel
fonte
Funciona bem! A menos que eu estou faltando alguma coisa, isso é exatamente o que eu queria :)
Lee Olayvar