Command-Line-Interface

如何跳轉到手冊頁中的特定標題?

  • August 5, 2021

為此,我在 vim 中設置了一個文件類型。我希望幫助程序成為man. 當然,這是行不通的。例如,對於ssh_config’s 手冊頁,如果我在一個單詞上,比如說ServerAliveCountMax,我會得到一個錯誤,因為沒有手冊頁用於ServerAliveCountMax- 它在ssh_config’s 手冊頁中。

從命令行,有沒有辦法跳轉到一個字元串或在裡面執行某種類型的命令man?就像如何info將我帶到資訊頁面的Miscellaneous部分一樣:screen

info screen Miscellaneous

這可能man嗎?即使執行搜尋也可以…


對於帶有 的 OSX/*BSD /usr/bin/man,這有效:

man -P 'less -p PATTERN' ssh_config  

從 GNU 的命令行man

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

或者對於 BSD man

man -P 'less -p ^ENVIRONMENT' man

將跳轉到手冊頁的“環境”標題man

這是一個方便的功能:

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

例子:

正常使用:

mans bash

轉到“描述”標題:

mans ^DESCRIPTION bash

依次轉到每個手冊頁的“描述”標題(按qEnter轉到下一個):

mans ^DESCRIPTION bash ksh zsh

轉到“參數擴展”子標題(您可以使用正則表達式搜尋任何字元串):

mans '^ *Parameter Expansion' bash

搜尋您在 Less 中使用的最新正則表達式:

mans '' bash

您搜尋的匹配項不會突出顯示。如果您願意,只需-G從選項中刪除less.

此函式不嘗試處理man支持的其他參數和選項。

引用自:https://serverfault.com/questions/206810