I've set a filetype in vim for this. I want the help program to be man
. Of course this does not work. For instance, with ssh_config
's manpage, if I am on a word, say ServerAliveCountMax
,
I get an error, since there is no man pager for ServerAliveCountMax
-- it's inside ssh_config
's manpage.
From the command line, is there any way to jump to a string or run some type of command inside man
? Just like how info
can take me to the Miscellaneous
section of screen
's info page:
info screen Miscellaneous
Is this possible with man
? Even running a search would serve...
For OSX/*BSD with /usr/bin/man
, this works:
man -P 'less -p PATTERN' ssh_config
From the command line for GNU
man
:or for BSD
man
:will jump to the "ENVIRONMENT" heading of the man page for
man
.Here is a handy function:
Examples:
Use normally:
Go to the "DESCRIPTION" heading:
Go to the "DESCRIPTION" heading of each man page in succession (press
q
andEnter
to go to the next one):Go to the "Parameter Expansion" sub-heading (you can search for any string using regular expressions):
Search for the most recent regex you've used in Less:
The match that you searched for won't be highlighted. If you'd prefer it to be, just remove the
-G
from the options toless
.This function makes no attempt to handle the other arguments and options that
man
supports.I don't like the
--pager
/-P
solution, becauseman
might be used but not be called directly (e.g. when you usegit help ...
). So using an envvar is more flexible. But I find usingPAGER='less ...
kind of redundant, becauseless
is usually the default pager anyway. You can use theLESS
envvar to pass on parameters directly toless
. This also has less quoting issues. E.g. this will correctly jump to the right section, even though it has a space in it:I use a simple trick to jump relatively fast between sections in man pages: I hit
/^[A-Z]
and then I can press n and N to jump forward and backwards.The search regex utilizes the basic structure of typical man pages - The main sections are written in capital letters and they begin a line without indentation therefor they should appear at the beginning of lines.
You can use
PAGER
variable for this run to avoid BSD/GNU compatibility problem.Use
"
quotes if the section title contains spaces:PAGER='less -p ^"ENVIRONMENT"' man man
/
in less will do a forward search, and?
will do a reverse search. Pressh
to see a full list.In man you can type
/
followed by a pattern to match e.g. to find the DEFAULT KEY BINDINGS section of the screen man page you would type