Estoy intentando configurar mi shell Z para que no muestre entradas duplicadas del historial con '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.
Sin embargo, no funciona de la forma esperada. Cuando tengo este historial:
1 history
2 cd /bin
3 cd /bin
4 cd /bin
Espero presionar ARRIBA dos veces (que está configurado en "línea ascendente o historial") y obtener "historial" en mi mensaje. Sin embargo, en lugar de eso aparece 'cd /bin'. Si presiono ARRIBA cuatro veces, va al comando 'historial', que es básicamente el comportamiento predeterminado sin HIST_FIND_NO_DUPS configurado.
Sé que podría usar otras opciones que evitarían que se guarden comandos duplicados en primer lugar (como HIST_IGNORE_ALL_DUPS), pero ese no es el comportamiento que quiero.
Respuesta1
HIST_FIND_NO_DUPS
Cuandobuscandopara las entradas del historial en el editor de líneas, no muestre duplicados de una línea encontrada anteriormente, incluso si los duplicados no son contiguos.
Creo que funciona según lo diseñado y setopt HIST_FIND_NO_DUPS
no debería afectar los resultados cuando simplemente presionas la flecha hacia arriba. Afecta los resultados de búsqueda que se muestran al presionar Ctrl-r
. Supongamos que tiene el siguiente historial:
mvn clean package
mvn clean package
mvn clean package -DSkipTests
mvn clean package
Ahora, si presiona Ctrl-r
y escribe, mvn
recibirá mvn clean package
una sugerencia. Cuando presiones Ctrl-r
nuevamente, obtendrás mvn clean package -DSkipTests
. Al presionar Ctrl-r
por tercera vez no se generará una nueva sugerencia, porque HIST_FIND_NO_DUPS
. Sin HIST_FIND_NO_DUPS
el caparazón te lo mostraría mvn clean package
de nuevo.