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

4

Con frecuencia estoy trabajando con subversion en la consola usando su cliente svn. Una de las tareas comunes es ver svn log; Sin embargo, su salida suele ser bastante masiva a pesar de la --limitopción. Me gustaría canalizar la salida a mi $PAGER(que es lesspara ser exactos), al igual que lo git loghace. 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>

la construcción de la tubería se agregará:

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?

ulidtko
fuente

Respuestas:

6

Puede hacer esto con una función de shell. Solo pon esto en tu ~/.zshrc.

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

He probado eso con bashy p4, pero debería funcionar igual con zshy svn. Las -FXopciones para lessdecirle que se cierre si todo el archivo cabe en la primera pantalla y no cambiar a la pantalla alternativa. Esto hace que parezca que lessno se usó en absoluto si la salida cabe en una pantalla.

garyjohn
fuente
Me gusta la solucion.
ulidtko