less - 如何让匹配的行不是屏幕上的第一行?

Enl*_*ico 6 less pager search scrolling

我经常这样做

$ man someprogram
Run Code Online (Sandbox Code Playgroud)

检查某些程序的手册。通常我也想在那里搜索一些东西,我只是点击/并写下我想搜索的东西。

不幸的是,无论匹配是什么,它都会被带到屏幕的顶行,因此大多数时候我需要手动向上滚动几次才能实际查看该匹配行的一些上下文。

我怎样才能设置less它在顶线和匹配线之间留下一些偏移线?

lak*_*tak 14

你想要这个-j选项。请参阅手册页中的“选项”下:

-jn 或者 --jump-target=n

指定屏幕上要定位“目标”行的行。目标行是任何命令指定的用于搜索模式、跳转到行号、跳转到文件百分比或跳转到标签的行。

屏幕行可以由数字指定:屏幕上的第一行是 1,下一行是 2,依此类推。该数字可以为负数以指定相对于屏幕底部的一条线:屏幕上的底部线是 -1,倒数第二条线是 -2,依此类推。

或者,屏幕行可以指定为屏幕高度的一部分,从小数点开始:0.5 位于屏幕中间,.3 是第一行向下的十分之三,依此类推。如果将行指定为分数,则在调整终端窗口大小时将重新计算实际行号,以便目标行保持在屏幕高度的指定分数。

如果使用任何形式的 -j 选项,重复的向前搜索(用“n”或“N”调用)从目标行之后的行开始,重复的向后搜索从目标行开始,除非被 -a 改变或-A。例如,如果使用“-j4”,则目标行是屏幕上的第四行,因此向前搜索从屏幕上的第五行开始。然而,非重复搜索(用“/”或“?”调用)总是分别从当前屏幕的开始或结束开始。

注意:您可以使用 配置该选项lesskey,使用环境变量,例如LESS=-j5 man someprogram-j5在less 中输入。