¿Cómo canalizar la salida de ciertos comandos a un buscapersonas con zsh?

¿Cómo canalizar la salida de ciertos comandos a un buscapersonas con zsh?

Con frecuencia trabajo con subversion en la consola usando su cliente svn. Una de las tareas comunes es la visualización svn log; sin embargo, su producción suele ser bastante masiva a pesar de las --limitopciones. Me gustaría canalizar la salida a mi $PAGER(que es lesspara ser exacto), tal como git loglo hace. Me pregunto si esto se puede lograr con zshfunciones avanzadas de finalización; es decir, cada vez que escribo

svn log path1 path2 path3<Enter>

Se adjuntará la construcción de las tuberías:

svn log path1 path2 path3 | $PAGER

Esto me parece la forma en que funcionan los alias, pero desde el "otro lado".

¿Es esto posible en zsh?

Respuesta1

Puedes hacer esto con una función de shell. Sólo pon esto en tu ~/.zshrc.

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

Lo probé con bashy p4, pero debería funcionar igual con zshy svn. Las -FXopciones para lessindicarle que salga si todo el archivo cabe en la primera pantalla y que no cambie a la pantalla alternativa. Esto hace que parezca que lessno se usó en absoluto si la salida cabe en una pantalla.

información relacionada