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_DUPS
nã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-r
e digitar, mvn
receberá mvn clean package
sugestões. Ao pressionar Ctrl-r
novamente, você obterá mvn clean package -DSkipTests
. Pressionar Ctrl-r
pela 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_DUPS
o shell mostraria mvn clean package
novamente.