Zsh: haz que la flecha hacia arriba salte comandos idénticos

10

En la mayoría de los shells de Unix, la tecla de flecha hacia arriba reemplaza el comando que está editando el comando anterior en el historial. La historia se puede ver usando el comando history.

se puede presionar más de una vez para ascender en la historia.

Mi pregunta es:

¿Cómo puedo configurar mi shell para que omita todos los comandos idénticos al actual?

De hecho, a menudo entro muchos makeen una fila. Cuando quiero ingresar nuevamente (o modificar ligeramente) un comando anterior, tengo que presionar muchas veces solo para omitir todos los makecomandos.

Sé que está lejos de ser el único consejo que aumenta la productividad de la carcasa.

prima:

  • dar una configuración que funcione para el shell Bash.
  • preservar el historial (puede ser útil saber que escribió un comando muchas veces seguidas)
Gabriel Devillers
fuente

Respuestas:

15

Para zsh ponga esto en su configuración:

setopt histignoredups

Lo que hace, ignorará las entradas duplicadas del historial durante la búsqueda.

La configuración equivalente para bash es

HISTCONTROL=$HISTCONTROL:ignoredups
Martin Sugioarto
fuente
1
gracias, setopt histignoredupshace el trabajo pero también suprime duplicados de la historia
Gabriel Devillers
Sí exactamente. En la mayoría de los casos, esto es lo que quieres. Cuando haya visto una sugerencia y no la desee, no desea que se la sugiera nuevamente. No elimina duplicados del historial, por cierto.
Martin Sugioarto
Tienes razón, pero quise decir: futuros duplicados no se agregarán al historial.
Gabriel Devillers
Se agregan, de lo contrario, la otra opción llamada histexpiredupsfirstque también uso no tendría sentido. Hace que los duplicados caduquen primero antes de mirar la edad. (Estoy hablando de zsh aquí)
Martin Sugioarto