我使用的是 Linux Mint 21(基于 Ubuntu)。刚刚注意到man
页面内部搜索(/
)在两行之间找不到单词(该单词在页面源代码中是完整的,以连字符和缩进显示)。我非常惊讶。有什么补救措施吗?
网络搜索在最佳结果中没有发现这个问题,也许它很少见,甚至是我的系统上的一个小故障?
我可以禁用分词作为一种解决方法吗?完全禁用吗?如果不行,那么针对roff
代码中的特定行禁用吗?
例如man mpv.1
(支持。)
描述 mpv 是基于 MPlayer 和 mplayer2 的媒体播放器。它支持多种视频文件格式、音频和视频编解码器以及字幕类型。特殊输入 URL 类型可用于从磁盘文件以外的各种来源读取输入。根据平台的不同,支持多种不同的视频和音频输出方法。
来源:
\fBmpv\fP 是基于 MPlayer 和 mplayer2 的媒体播放器。它支持多种视频文件格式、音频和视频编解码器以及字幕类型。特殊输入 URL 类型可用于从磁盘文件以外的各种来源读取输入。根据平台的不同,支持各种不同的视频和音频输出方法。
編輯:已編輯/etc/groff/man.local
.\" -*- nroff -*-
.\"
.\" This file is loaded after an-old.tmac.
.\" Put any local modifications to an-old.tmac here.
.
. \" Disable hyphenation.
.nr HY 0
.
.if n \{\
ETC...
是的;您预料到了主要问题。
根本不是。您的分页器只知道它已读取的缓冲区或流的内容。它无法理解连字或断字,而且在任何合理(和一般)的基础上也无法理解。换句话说,它无法知道手册页源文档在格式化之前是什么样子。
是的。
编辑:正如 Stephen Kitt 在该答案的评论中指出的那样,man-db man 支持一个
--nh
选项(以及更长的同义词)来执行此操作(在一定程度上)。shell 函数可能满足您的需要。或者:
安排将
-rHY=0
(或-r HY=0
) 选项传递给groff 。这在groff_man (7) 页面中有记录。例如,在 Debian 系统上,您可以通过环境变量将此选项提供给groff
MANROFFOPT
。如果您希望所有手册页都关闭自动连字符(见下文),您可以编辑/etc/groff/man.local文件来执行与roff请求等效的操作。
groff_man (7)的“文件”部分说明了该配置文件存储在您的安装中的什么位置。不同的供应商将其放在不同的地方。
从技术上讲,这只是一个几乎完整的解决方案——就像它控制的原始roff请求一样,此选项仅关闭单词的自动连字符。格式化程序仍然(通常)会在显式连字符处断开,例如单词“user-defined”。
roff
\%
源中的转义序列会在单词的最开头出现连字符时抑制单词的连字符连接。(roff中的“单词”由空格分隔;在大多数情况下,这意味着空格和换行符。)例如,我们可以这样做。并且格式化程序不会像平常一样在连字符后断开。
不幸的是,如果你在单词中使用
\%
again,会发生什么情况并没有得到很好的定义,不同的格式化程序会有不同的行为。 但这是一个极端的情况。最后,我要指出的是man-db man (1)的这个功能,它在某种程度上缓解了整个问题。
我希望这有帮助。