Làm thế nào để chuyển đến một tiêu đề cụ thể trong một trang người đàn ông?


9

Ví dụ: ssh_config

Tôi đã thiết lập một filetype trong vim cho điều này. Tôi muốn chương trình trợ giúp

man

Tất nhiên điều này không hiệu quả, nếu tôi đang nói, hãy nói

ServerAliveCountMax

Tôi gặp lỗi, vì không có máy nhắn tin nào cho ServerAliveCountMax, nó nằm trong trang của ssh_config.

Có cách nào để, từ dòng lệnh, nhảy đến một chuỗi hoặc chạy một số loại lệnh bên trong con người? Rất giống thông tin thực sự:

info screen Miscellaneous

sẽ đưa tôi đến phần Linh tinh của trang thông tin màn hình.

Điều này có thể với con người? Ngay cả khi chạy tìm kiếm cũng sẽ phục vụ ...

EDIT: Tôi đang sử dụng OSX 10.6.5. với người đàn ông mặc định (/ usr / bin / man)

EDIT: Tôi nói một chút phương ngữ;), vì vậy tôi đã được dẫn đến câu trả lời đúng:

man -P 'less -p PATTERN' ssh_config  

Đây có phải là lời mời trên OSX / * BSD không.

Câu trả lời:


11

Từ dòng lệnh cho GNU man:

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

hoặc cho BSD man:

man -P 'less -p ^ENVIRONMENT' man

sẽ nhảy đến tiêu đề "MÔI TRƯỜNG" của trang man cho man.

Đây là một chức năng tiện dụng:

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[@]}
}

Ví dụ:

Sử dụng bình thường:

mans bash

Chuyển đến tiêu đề "MÔ TẢ":

mans ^DESCRIPTION bash

Chuyển đến tiêu đề "MÔ TẢ" của từng trang nam liên tiếp (nhấn qEnterđể đến trang tiếp theo):

mans ^DESCRIPTION bash ksh zsh

Chuyển đến tiêu đề phụ "Mở rộng tham số" (bạn có thể tìm kiếm bất kỳ chuỗi nào bằng các biểu thức thông thường):

mans '^ *Parameter Expansion' bash

Tìm kiếm regex gần đây nhất bạn đã sử dụng trong Ít hơn:

mans '' bash

Trận đấu mà bạn tìm kiếm sẽ không được tô sáng. Nếu bạn thích nó, chỉ cần loại bỏ -Gkhỏi các tùy chọn để less.

Hàm này không cố gắng xử lý các đối số và tùy chọn khác manhỗ trợ.


Hứa hẹn, tôi đã chỉnh sửa câu hỏi của mình, tôi thấy bạn đã chạy bằng cách sử dụng macports hoặc linux, tôi có tùy chọn -P trong danh sách tùy chọn kiểu BSD tào lao ... đang thử.
chiggsy

Cảm ơn, tôi đã nhận nó, nhưng cảm ơn một lần nữa! BAH, tôi không thể đưa ra câu trả lời mới của bạn một lần nữa :(
chiggsy

@Chiggsy: Tôi mang nó đi -Plàm. Nếu vậy, tôi sẽ thêm nó vào câu trả lời của tôi.
Tạm dừng cho đến khi có thông báo mới.

Đối với hồ sơ, tôi nêu lên câu trả lời ban đầu của bạn. Nó đã hoàn toàn chính xác. Chỉnh sửa của bạn, tôi đã không thể upvote. Tôi muốn mặc dù ...
chiggsy

@Chiggsy: Tôi có nên thêm kiểu -PBSD vào câu trả lời của mình để tham khảo trong tương lai không?
Tạm dừng cho đến khi có thông báo mới.

2

Bạn có thể sử dụng PAGERbiến cho lần chạy này để tránh sự cố tương thích BSD / GNU.

Sử dụng "dấu ngoặc kép nếu tiêu đề phần chứa khoảng trắng:

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


1

/ít hơn sẽ thực hiện tìm kiếm chuyển tiếp và ?sẽ thực hiện tìm kiếm ngược. Nhấn hđể xem danh sách đầy đủ.


Xem bình luận của tôi ở trên, và thực sự, câu hỏi của tôi.
chiggsy

1

Ở người đàn ông, bạn có thể nhập /theo mẫu phù hợp, ví dụ: để tìm phần DEFAULT KEY BINDINGS của trang man màn hình bạn sẽ nhập

/^DEFAULT KEY BINDINGS

Đúng. Điều này là đúng, nhưng bạn phải ở trong con người để làm điều đó. Tôi muốn đi từ cái vỏ đến cái đó trong một bước.
chiggsy

1

Tôi sử dụng một mẹo đơn giản để nhảy tương đối nhanh giữa các phần trong trang man: Tôi nhấn /^[A-Z]và sau đó tôi có thể nhấn nNđể nhảy tiến và lùi.

Regex tìm kiếm sử dụng cấu trúc cơ bản của các trang man điển hình - Các phần chính được viết bằng chữ in hoa và chúng bắt đầu một dòng mà không thụt vào do đó chúng sẽ xuất hiện ở đầu dòng.


1

Tôi không thích --pager/ -Pgiải pháp, vì mancó thể được sử dụng nhưng không được gọi trực tiếp (ví dụ: khi bạn sử dụng git help ...). Vì vậy, sử dụng một envvar là linh hoạt hơn. Nhưng tôi thấy sử dụng PAGER='less ...loại dự phòng, vì lessdù sao thường là máy nhắn tin mặc định. Bạn có thể sử dụng LESSenvvar để truyền trực tiếp các tham số less. Điều này cũng có ít vấn đề trích dẫn. Ví dụ, điều này sẽ nhảy chính xác đến phần bên phải, mặc dù nó có một khoảng trắng trong đó:

LESS="-p file system" git help glossary

1
Lên đến đỉnh với câu trả lời này! Cảm ơn :)
Patryk Obara
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.