考虑以下文件:
$ LESS= \less test
abc
def
abc
默认情况下,搜索/abc
将less
跳转到第 3 行,因为/pattern
搜索从第二行开始,根据man 1 less
:
/pattern
[... snipped ...] The search starts at the second line displayed (but see the
-a and -j options, which change this).
-a
并-j
没有帮助。
令人烦恼的是,我必须N在每次/pattern
搜索后进行向后搜索(),以确保我没有错过第一行中的任何重要内容。
如何使less
模式搜索从显示的第一行开始?
编辑:
less
版本:
$ less --version
less 436
Copyright (C) 1984-2009 Mark Nudelman
less comes with NO WARRANTY, to the extent permitted by law.
For information about the terms of redistribution,
see the file named README in the less distribution.
Homepage: http://www.greenwoodsoftware.com/less
答案1
最直接的解决方案是升级到 less 441 或更高版本。从变更日志:
less-440 修复了 less-438 中的一个错误,并且冒着某些功能蔓延的风险,添加了一项人们强烈要求的功能。 -A 选项更改搜索行为,以便初始搜索包括整个显示的屏幕,并且不会像当前所做的那样跳过第一行。非初始搜索(例如,“n”命令)继续跳过第一(目标)行,以允许搜索继续越过当前屏幕。
less-441 更改了搜索行为,因此 less-440 中引入的新 -A 选项现在成为默认选项。 -A 选项现在将行为更改为 440 之前的旧行为。
-a
and选项-j
可能会导致搜索开始于最上面的屏幕行,但我不认为它们会导致搜索开始在最上面的屏幕行 - 这就是-A
添加该选项的原因(并设为默认值,显然它非常受欢迎)。
答案2
我能想到的最好的解决方法是使用“保留当前位置”功能来突出显示匹配的文本,但不跳转到目标行:
/
CTRL+Kpattern
然而,它会导致额外的击键。
编辑:
该问题已在较新版本中得到修复less
。参考@吉尔斯的回答了解详情。