Bagaimana cara melompat ke judul tertentu di halaman manual?

9

Contoh: ssh_config

Saya telah menetapkan tipe file dalam vim untuk ini. Saya ingin program bantuan itu

man

Tentu saja ini tidak berhasil, jika saya sedang berbicara, katakan

ServerAliveCountMax

Saya mendapatkan kesalahan, karena tidak ada man pager untuk ServerAliveCountMax, ada di dalam manual ssh_config.

Apakah ada cara untuk, dari baris perintah, melompat ke string atau menjalankan beberapa jenis perintah di dalam manusia? Mirip seperti info sebenarnya:

info screen Miscellaneous

akan membawa saya ke bagian Lain-lain dari halaman info layar.

Apakah ini mungkin terjadi pada pria? Bahkan menjalankan pencarian akan membantu ...

EDIT: Saya menggunakan OSX 10.6.5. dengan man default (/ usr / bin / man)

EDIT: Saya berbicara sedikit dialek;), jadi saya diarahkan ke jawaban yang benar:

man -P 'less -p PATTERN' ssh_config  

Apakah doa pada OSX / * BSD tampaknya.

chiggs
sumber

Jawaban:

11

Dari baris perintah untuk GNU man:

man --pager='less -p ^ENVIRONMENT' man

atau untuk BSD man:

man -P 'less -p ^ENVIRONMENT' man

akan melompat ke tajuk "LINGKUNGAN" halaman manual untuk man.

Berikut ini adalah fungsi praktis:

mans () {    # Bash
    local pages string
    if [[ -n $2 ]]
    then
        pages=(${@:2})
        string="$1"
    else
        pages=$1
    fi
    # GNU man
    man ${2:+--pager="less -p \"$string\" -G"} ${pages[@]}
    # BSD man
    # man ${2:+-P "less -p \"$string\" -G"} ${pages[@]}
}

Contoh:

Gunakan secara normal:

mans bash

Buka tajuk "DESCRIPTION":

mans ^DESCRIPTION bash

Buka tajuk "DESCRIPTION" pada setiap halaman manual secara berurutan (tekan qdan Enteruntuk menuju ke halaman berikutnya):

mans ^DESCRIPTION bash ksh zsh

Buka subtitle "Ekspansi Parameter" (Anda dapat mencari string apa pun menggunakan ekspresi reguler):

mans '^ *Parameter Expansion' bash

Cari regex terbaru yang Anda gunakan dalam Less:

mans '' bash

Pertandingan yang Anda cari tidak akan disorot. Jika Anda menginginkannya, cukup hapus -Gopsi dari less.

Fungsi ini tidak berupaya menangani argumen dan opsi lain yang manmendukung.

Dijeda sampai pemberitahuan lebih lanjut.
sumber
menjanjikan, saya mengedit pertanyaan saya, saya melihat Anda menjalankan yang menggunakan macports atau linux, saya memiliki opsi -P dalam daftar opsi gaya BSD jelek ... mencoba itu.
chiggsy
Terima kasih, saya mengerti, tapi terima kasih lagi! BAH, saya tidak bisa mengubah jawaban baru Anda lagi :(
chiggsy
@ Chiggsy: Saya menganggapnya -Pberhasil. Jika demikian, saya akan menambahkannya ke jawaban saya.
Dijeda sampai pemberitahuan lebih lanjut.
Sebagai catatan, saya meningkatkan jawaban asli Anda. Itu sepenuhnya benar. Hasil edit Anda, saya tidak dapat mengunggah. Saya ingin meskipun ...
chiggsy
@ Chiggsy: Haruskah saya menambahkan gaya -PBSD ke jawaban saya untuk referensi di masa mendatang?
Dijeda sampai pemberitahuan lebih lanjut.
2

Anda bisa menggunakan PAGERvariabel untuk menjalankan ini untuk menghindari masalah kompatibilitas BSD / GNU.

Gunakan "tanda kutip jika judul bagian berisi spasi:

PAGER='less -p ^"ENVIRONMENT"' man man

pengguna503963
sumber
1

/kurang akan melakukan pencarian maju, dan ?akan melakukan pencarian terbalik. Tekan huntuk melihat daftar lengkap.

Ignacio Vazquez-Abrams
sumber
Lihat komentar saya di atas, dan sebenarnya, pertanyaan saya.
chiggsy
1

Dalam man Anda dapat mengetik /diikuti dengan pola yang cocok misalnya untuk menemukan bagian DEFAULT KEY BINDINGS dari halaman man screen yang Anda ketikkan

/^DEFAULT KEY BINDINGS
user9517
sumber
Iya. Hal ini benar, tetapi Anda harus dalam manusia untuk melakukannya. Saya ingin beralih dari shell ke dalam satu langkah.
chiggsy
1

Saya menggunakan trik sederhana untuk melompat relatif cepat di antara bagian-bagian di halaman manual: Saya menekan /^[A-Z]dan kemudian saya dapat menekan ndan Nuntuk melompat maju dan mundur.

Regex pencarian menggunakan struktur dasar halaman manual tipikal - Bagian utama ditulis dengan huruf kapital dan mereka memulai garis tanpa lekukan sehingga mereka akan muncul di awal baris.

Doron Behar
sumber
1

Saya tidak suka --pager/ -Psolusi, karena manmungkin digunakan tetapi tidak dipanggil secara langsung (misalnya ketika Anda menggunakan git help ...). Jadi menggunakan envvar lebih fleksibel. Tapi saya menemukan menggunakan PAGER='less ...jenis yang berlebihan, karena lessbiasanya pager default pula. Anda dapat menggunakan LESSenvvar untuk meneruskan parameter secara langsung ke less. Ini juga memiliki sedikit masalah mengutip. Misalnya ini akan melompat dengan benar ke bagian kanan, meskipun memiliki ruang di dalamnya:

LESS="-p file system" git help glossary
David Ongaro
sumber
1
Naik ke atas dengan jawaban ini! Terima kasih :)
Patryk Obara