如何在 Linux 中向man
页面或页面添加行号?info
我想使用行号在手册页中导航。我可以将手册页写在一个文件中,然后用 Vim 打开它,但是有更好的方法吗?
答案1
从man man
:
-P pager, --pager=pager
Specify which output pager to use. By default, man uses less
-s. This option overrides the $MANPAGER environment variable,
which in turn overrides the $PAGER environment variable. It is
not used in conjunction with -f or -k.
The value may be a simple command name or a command with argu-
ments, and may use shell quoting (backslashes, single quotes, or
double quotes). It may not use pipes to connect multiple com-
mands; if you need that, use a wrapper script, which may take
the file to display either as an argument or on standard input.
因此,您可以指定寻呼机带有less
行-N
编号标志。
man -P "less -N"
问题是man
根据终端的列数设置页面的宽度,但是行号在行less
的开头添加了额外的字符(空格+行号),因此输出的格式将是有点乱。
$ man -P "less -N" man
结果:
1 MAN(1) Manual pager utils M
1 AN(1)
2
3
4
5 NAME
6 man - an interface to the on-line reference manuals
7
8 SYNOPSIS
9 man [-C file] [-d] [-D] [--warnings[=warnings]] [-R encoding
9 ] [-L
10 locale] [-m system[,...]] [-M path] [-S list] [-e extension] [-
10 i|-I]
11 [--regex|--wildcard] [--names-only] [-a] [-u] [--no-subpages]
11 [-P
12 pager] [-r prompt] [-7] [-E encoding] [--no-hyphenation] [--no-jus
12 tifi-
13 cation] [-p string] [-t] [-T[device]] [-H[browser]] [-X[dpi]]
13 [-Z]
14 [[section] page ...] ...
因此,您可以更改环境变量,从 的数量中MANWIDTH
减去 7 个字符(行前缀的宽度),以强制格式化宽度较短的页面。less
COLUMNS
man
$ MANWIDTH=$(( $COLUMNS -7 )) man -P "less -N" man
结果:
1 MAN(1) Manual pager utils MAN(1)
2
3
4
5 NAME
6 man - an interface to the on-line reference manuals
7
8 SYNOPSIS
9 man [-C file] [-d] [-D] [--warnings[=warnings]] [-R encoding] [-L
10 locale] [-m system[,...]] [-M path] [-S list] [-e extension]
11 [-i|-I] [--regex|--wildcard] [--names-only] [-a] [-u] [--no-sub-
12 pages] [-P pager] [-r prompt] [-7] [-E encoding] [--no-hyphen-
13 ation] [--no-justification] [-p string] [-t] [-T[device]]
14 [-H[browser]] [-X[dpi]] [-Z] [[section] page ...] ...
答案2
打开联机帮助页,点击-N
然后输入。 (-、然后ShiftN、然后Enter)
例如man man
::
1 MAN(1) Manual pager utils MA 2
3 NAME
4 man - an interface to the system reference manuals
5
6 SYNOPSIS
7 man [man options] [[section] page ...] ...
8 man -k [apropos options] regexp ...
9 man -K [man options] [section] term ...
10 man -f [whatis options] page ...
11 man -l [man options] file ...
12 man -w|-W [man options] page ...
删除行号-n Enter
为了避免重复行,请设置MANWIDTH
变量。LESS
变量设置为-N
打印行号:
MANWIDTH=100 LESS=-N man man
答案3
man
输出长行并假设您有一个类似的寻呼机less
。
请注意,特定手册页的输出中的行号可能会有所不同,因为man
根据运行它的窗口宽度来换行。
尝试类似的方法:
COLUMNS=72 man --pager='cat' -s 3 printf | nl -ba > Man.printf
fold
在输出上使用该命令很丑陋,因为man
即使它没有写入 tty,也使用 COLUMNS 变量来分隔行,然后fold
将所有单词间距重新设置为单个空格。
您可能希望将其包装在脚本中,以将-s 3
节号和页面名称放入参数中。
答案4
其他人已经给出了可行的解决方案,所以我想添加一个替代方案:
安装以下2个包:
后者将安装一个名为的应用程序batman
,这不仅会为您的手册页着色,还会添加行号。
下面是输出的示例:
(我输入的命令很简单batman emerge
)
如您所见,batman
它会自动为您处理显示宽度。