Я часто работаю с 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
вообще не использовалось, если вывод помещается на одном экране.