我可以强制“man”进行小写敏感匹配吗?

我可以强制“man”进行小写敏感匹配吗?

当我搜索手册页时,搜索区分大小写,但仅限于大写字母。例如,x将匹配xXX匹配x。这是man-dbman 的版本,默认在 Fedora 派生系统上使用,也可在其他系统上使用。 man man说默认寻呼机是less -s. $LESS没有在环境中定义,我的$PAGER只是less,并且我没有 less 的别名。

这不是我less单独调用时的行为。

使用时是否强制小写字母x仅匹配小写字母?xman

答案1

人在呼唤“少”;人员级别的唯一控制是选择调用 Less 的选项。

Less 的搜索区分大小写由两个选项控制。

  • 如果-I有效,则搜索不区分大小写:aA可用于匹配aA
  • 如果-i有效但 无效-I,则搜索不区分大小写,但前提是模式不包含大写字母。

如果您-I为 Less 设置默认选项,那么即使在手册页中,所有搜索也将不区分大小写。

Man-db 通过环境变量将额外的选项传递给分页器LESS,Less 的解释方式与命令行选项相同。该设置在编译时进行硬编码,并以-i. (该值"-ix8RmPm%s$PM%s$"自 Man-db 2.6.2 起;该P…$部分是提示字符串。)

如果您不希望手册页中的搜索区分大小写,或者希望它们始终不区分大小写,则无法在 man-db 本身中进行配置。您可以为操作环境变量创建别名man或包装器脚本LESS,因为 Man-db 将其内容添加到当前值(如果存在):

alias man='LESS="$LESS -I" man'

要关闭该-i选项,从而使搜索在手册页中默认始终区分大小写:

alias man='LESS="$LESS -+i" man'

LESS您还可以通过设置环境变量来硬编码不同的值MANLESS,但如果这样做,则man只需设置LESS为 的值MANLESS,您就会丢失自定义标题行(“手册页foo(42)”)和其他好东西(特别是,使请务必包含-R粗体和下划线格式)。

答案2

这就是less's -i(命令行开关)“不区分大小写”模式的工作原理(即,它仍然对大写字母敏感)。正如 Gilles 指出的那样,使用它会被编译到 man-db 中。

除了 Gilles 回答 WRT 设置别名+-i或自定义中指示的方法之外MANLESS,您还可以在手册页打开后切换严格大小写匹配-i(这将打开和关闭开关);您将看到一条“大小写在搜索中很重要”消息,现在x仅匹配xX仅匹配X

Man-dbman有一个-I开关,但这适用于搜索手册页——例如,默认情况下man BASH会给你 bash 手册页,反之则man -I BASH不会。

答案3

“使用时是否强制小写字母x仅匹配小写字母?”xman

这是一种方法

man -Tascii manpage |less

我不知道具体细节,但roff处理正在执行标记,并且寻呼机似乎与未标记的文本相匹配,即使它正在显示标记的文本。
非常混乱,希望nroff高手能解释一下管道。

相关内容