zsh を使用して特定のコマンドの出力をページャーにパイプする方法は?

zsh を使用して特定のコマンドの出力をページャーにパイプする方法は?

私は、コンソールでクライアントを使用してサブバージョンを頻繁に操作していますsvn。一般的なタスクの1つは表示です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でも同じように動作するはずです。ファイル全体が最初の画面に収まる場合は終了し、別の画面に切り替えないように指示するオプション。これにより、出力が 1 つの画面に収まる場合は がまったく使用されていないように見えます。zshsvn-FXlessless

関連情報