Как передать вывод по каналу определенных команд к пейджеру с zsh?

Я часто работаю с подверсией в консоли с помощью ее клиента svn. Одна из общих задач просматривает svn log; однако его вывод является обычно довольно серьезным несмотря на --limit опция. Я хотел бы передать вывод по каналу к моему $PAGER (который является less быть точным), точно так же, как git log делает. Интересно, может ли это быть достигнуто с zsh усовершенствованные функции завершения; т.е. каждый раз, когда я ввожу

svn log path1 path2 path3<Enter>

конструкция передачи по каналу будет добавлена:

svn log path1 path2 path3 | $PAGER

Это напоминает мне путь работа псевдонимов, но с "другой стороны".

Действительно ли это возможно в zsh?

4
задан 04.02.2011, 22:36

1 ответ

Можно сделать это с функцией оболочки. Просто вставьте это Ваш ~/.zshrc.

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

Я протестировал это с bash и p4, но это должно работать то же с zsh и svn. -FX опции к less скажите этому выходить, если весь файл соответствует на первом экране а не переключаться на альтернативный экран. Это заставляет его появиться это less не использовался вообще, если вывод соответствует на одном экране.

6
ответ дан 07.12.2019, 20:09

Теги

Похожие вопросы