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

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

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

svn log path1 path2 path3<Enter>

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

svn log path1 path2 path3 | $PAGER

Мне это напоминает принцип работы псевдонимов, но с «другой стороны».

Возможно ли это в zsh?

решение1

Вы можете сделать это с помощью функции оболочки. Просто поместите это в ваш ~/.zshrc.

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

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

Связанный контент