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

4

Frequentemente estou trabalhando com subversão no console usando seu cliente svn . Uma das tarefas comuns é visualizar svn log ; no entanto, sua saída é geralmente muito grande, apesar da opção --limit . Eu gostaria de canalizar a saída para o meu $PAGER (que é less para ser exato), assim como git log faz. Gostaria de saber se isso pode ser alcançado com os recursos avançados de conclusão do zsh ; ou seja, sempre que eu digito

svn log path1 path2 path3<Enter>

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

svn log path1 path2 path3 | $PAGER

Isso se assemelha a mim como os aliases funcionam, mas do "outro lado".

Isso é possível em zsh?

    
por ulidtko 04.02.2011 / 21:36

1 resposta

6

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 bash e p4 , mas deve funcionar da mesma forma com zsh e svn . As opções -FX para less dizem para ele sair se o arquivo inteiro couber na primeira tela e não alternar para a tela alternativa. Isso faz parecer que less não foi usado se a saída couber em uma tela.

    
por 04.02.2011 / 22:24