如何跳转到手册页中的特定标题?

如何跳转到手册页中的特定标题?

我在 vim 中为此设置了一个文件类型。我希望帮助程序是man。当然这行不通。例如,对于ssh_config的手册页,如果我在一个单词上,比如ServerAliveCountMax,我会得到一个错误,因为没有 的手册页——它在的手册页ServerAliveCountMax内。ssh_config

从命令行,有没有办法跳转到字符串或运行内部的某种命令man?就像如何info将我带到信息页面Miscellaneous的部分:screen

info screen Miscellaneous

这可能吗man?即使运行搜索也可以……


对于带有 的 OSX/*BSD /usr/bin/man,其工作原理如下:

man -P 'less -p PATTERN' ssh_config  

答案1

从 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

连续转到每个手册页的“DESCRIPTION”标题(按qEnter转到下一个):

mans ^DESCRIPTION bash ksh zsh

转到“参数扩展”子标题(您可以使用正则表达式搜索任何字符串):

mans '^ *Parameter Expansion' bash

搜索您在 Less 中使用过的最近正则表达式:

mans '' bash

您搜索的匹配项不会突出显示。如果您希望突出显示,只需-G从选项中删除即可less

此函数不会尝试处理man支持的其他参数和选项。

答案2

我使用一个简单的技巧在手册页的各个部分之间相对快速地跳转:我点击/^[A-Z]然后按n和可以N向前和向后跳转。

搜索正则表达式利用典型手册页的基本结构 - 主要部分以大写字母书写,并且它们以没有缩进的行开头,因此它们应该出现在行首。

答案3

我不喜欢--pager/-P解决方案,因为man可能会使用但不能直接调用(例如当您使用 时git help ...)。因此使用环境变量更灵活。但我发现使用PAGER='less ...有点多余,因为less无论如何通常是默认分页器。您可以使用LESS环境变量将参数直接传递给less。这也有较少的引用问题。例如,这将正确跳转到正确的部分,即使它里面有一个空格:

LESS="-p file system" git help glossary

答案4

/在 less 中将进行正向搜索,而?将进行反向搜索。按h查看完整列表。

相关内容