Bagaimana cara menyalurkan output perintah tertentu ke pager dengan zsh?

4

Saya sering bekerja dengan subversi di konsol menggunakan kliennya svn. Salah satu tugas umum adalah melihat svn log; Namun outputnya biasanya cukup besar meskipun ada --limitopsi. Saya ingin menyalurkan output ke saya $PAGER( lesstepatnya), seperti git loghalnya. Saya ingin tahu apakah ini dapat dicapai dengan zshfitur penyelesaian lanjutan; yaitu setiap kali saya mengetik

svn log path1 path2 path3<Enter>

konstruksi perpipaan akan ditambahkan:

svn log path1 path2 path3 | $PAGER

Ini mirip dengan saya cara alias bekerja, tetapi dari "sisi lain".

Apakah ini mungkin dalam zsh?

ulidtko
sumber

Jawaban:

6

Anda dapat melakukan ini dengan fungsi shell. Masukkan saja ini ke dalam ~/.zshrc.

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

Saya sudah menguji itu dengan bashdan p4, tetapi harus bekerja sama dengan zshdan svn. The -FXpilihan untuk lessmenceritakannya untuk berhenti jika seluruh file sesuai pada layar pertama dan tidak untuk beralih ke layar alternatif. Ini membuatnya tampak lesstidak digunakan sama sekali jika output cocok pada satu layar.

garyjohn
sumber
Saya suka solusinya.
ulidtko