Zsh: modifica automáticamente el comando ejecutado


9

Recientemente instalé grc (colorizador genérico) en mi sistema a través de MacPorts, lo que me permite obtener resultados coloreados para muchos comandos que, por defecto, no lo admiten (vea la captura de pantalla a continuación). Ejemplo de grc con traceroute.
Me gustaría hacer que usar grc sea automático, sin embargo, no para comandos específicos, sino para cada comando. Yo uso zsh como mi caparazón.

Esencialmente, cada vez que ejecuto command -parameter 1 2 3me gustaría que se ejecute automáticamente como grc command -parameter 1 2 3.
No estoy buscando usar alias, por ejemplo, traceroutealias grc traceroute, ya que estoy agregando más y más comandos para que grc se coloree.

He buscado configuraciones preexec y precmd para .zshrc, pero no he encontrado la manera de lograr lo que estoy buscando.

Respuestas:


6

Puede hacerlo redefiniendo el widget de aceptar línea:

add-grc() { [[ $BUFFER = grc* ]] || BUFFER="grc $BUFFER"; zle .$WIDGET "$@"; }
zle -N accept-line add-grc

Sin embargo, podría causar problemas para comandos como "for i (..)", "var = x", "f () {" ...


Buen punto. No puedo pensar en ningún problema que esta solución pueda crearme, pero tiene razón en este sentido. Gracias por tu tiempo.
Nit

Un inconveniente de este método es que la historia se mostrará grcal comienzo de cada comando.
joeytwiddle 01 de

6

Otra alternativa El mismo tipo de problemas potenciales:

TRAPDEBUG() { eval "grc $ZSH_DEBUG_CMD"; setopt errexit; }

Usaría un "alias" para cada comando que necesita "grc" en lugar de tratar de encontrar excepciones para las soluciones publicadas aquí.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.