我在 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”标题(按q
和Enter
转到下一个):
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
查看完整列表。