zsh ignora HIST_FIND_NO_DUPS

zsh ignora HIST_FIND_NO_DUPS

Estou tentando configurar meu shell Z para não mostrar entradas duplicadas do histórico com 'setopt HIST_FIND_NO_DUPS'.

HIST_FIND_NO_DUPS
When searching for history entries in the line editor, do not display duplicates of a line previously found, even if the duplicates are not contiguous.

No entanto, não funciona da maneira esperada. Quando eu tenho esse histórico:

    1  history
    2  cd /bin
    3  cd /bin
    4  cd /bin

Espero pressionar UP duas vezes (que está definido como 'up-line-or-history') e obter 'history' no meu prompt. No entanto, em vez disso, recebo 'cd/bin'. Se eu pressionar UP quatro vezes, ele irá para o comando 'history', que é basicamente o comportamento padrão sem o HIST_FIND_NO_DUPS definido.

Eu sei que poderia usar outras opções que impediriam que comandos duplicados fossem salvos (como HIST_IGNORE_ALL_DUPS), mas esse não é o comportamento que desejo.

Responder1

HIST_FIND_NO_DUPS

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

Acho que funciona conforme planejado e setopt HIST_FIND_NO_DUPSnão deve afetar os resultados quando você apenas pressiona a seta para cima. Afeta os resultados da pesquisa exibidos e você pressiona Ctrl-r. Suponha que você tenha o seguinte histórico:

mvn clean package
mvn clean package
mvn clean package -DSkipTests
mvn clean package

Agora, se você pressionar Ctrl-re digitar, mvnreceberá mvn clean packagesugestões. Ao pressionar Ctrl-rnovamente, você obterá mvn clean package -DSkipTests. Pressionar Ctrl-rpela 3ª vez não gerará uma nova sugestão, pois duplicatas não são permitidas por HIST_FIND_NO_DUPS. Sem HIST_FIND_NO_DUPSo shell mostraria mvn clean packagenovamente.

informação relacionada