Zsh: Modifica automaticamente o comando executado

9

Eu instalei recentemente o grc (colorizer genérico) no meu sistema via MacPorts, me dando a capacidade de obter saída colorida para muitos comandos que, por padrão, não suportam (veja a imagem abaixo).
Eu gostaria de fazer usando o grc automático, porém não para comandos específicos, mas para cada comando. Eu uso zsh como meu shell.

Essencialmente sempre que executo command -parameter 1 2 3 , eu gostaria que ele fosse executado automaticamente como grc command -parameter 1 2 3 .
Eu não estou querendo usar aliases, por exemplo, traceroute alias para grc traceroute , já que estou adicionando mais e mais comandos para o grc colorir.

Eu examinei as configurações preexec e precmd para .zshrc, mas não encontrei uma maneira de alcançar o que estou procurando.

    
por Nit 27.08.2012 / 18:15

3 respostas

6

Você pode fazer isso redefinindo o widget de linha de aceitação:

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

No entanto, isso poderia causar problemas para comandos como "para i (..)", "var = x", "f () {" ...

    
por 27.08.2012 / 19:24
6

Outra alternativa. O mesmo tipo de problemas potenciais:

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

Eu usaria um "alias" para cada comando que precisasse de "grc" em vez de tentar descobrir exceções para as soluções postadas aqui.

    
por 27.08.2012 / 19:36
3

Considere usar grc.zsh que faz parte de grc , que pode ser encontrado aqui . Tem aliases para todos os comandos suportados.
Veja esta resposta do Stackoverflow

    
por 12.10.2016 / 22:17