Como canalizar a saída de certos comandos para um pager com zsh?

Como canalizar a saída de certos comandos para um pager com zsh?

Estou frequentemente trabalhando com o subversion no console usando seu client svn. Uma das tarefas comuns é visualizar svn log; no entanto, sua produção geralmente é bastante grande, apesar da --limitopção. Eu gostaria de canalizar a saída para o meu $PAGER(que é lessexato), assim como git logfaz. Eu me pergunto se isso pode ser alcançado com zshrecursos avançados de conclusão; ou seja, sempre que digito

svn log path1 path2 path3<Enter>

a construção da tubulação será anexada:

svn log path1 path2 path3 | $PAGER

Para mim, isso se parece com o modo como os aliases funcionam, mas do "outro lado".

Isso é possível no zsh?

Responder1

Você pode fazer isso com uma função shell. Basta colocar isso no seu ~/.zshrc.

svn() {
    if [ "$1" = "log" ]
    then
        command svn "$@" | less -FX
    else
        command svn "$@"
    fi
}

Eu testei isso com bashand p4, mas deve funcionar da mesma forma com zshand svn. As -FXopções para lessdizer para ele sair se o arquivo inteiro couber na primeira tela e não para mudar para a tela alternativa. Isso faz parecer que lessnão foi usado se a saída couber em uma tela.

informação relacionada