Gil*_*il' 65
手册页可以追溯到Unix 第一版。虽然已经发明了超文本,但它仍处于起步阶段。距网络还有 20 年的时间,而手册是一本真正的印刷书,如果合适,通常每页有一个命令(这就是为什么它们被称为页面的原因)。
从那时起,手册页使用的格式发生了一些变化,但大多数页面并不是真正为超文本设计的,并且默认man程序不支持它(它只是一个纯文本查看器,具有支持一些基本格式的技巧)。然而,有那一些重建超链接手册页观看节目,主要是链接到其他人的页面,这是传统的书面形式man(1)哪里man是男人页面的名称,1是款号:
您可以man2html在许多在线站点上浏览多个操作系统的手册页,通过或类似工具转换为 HTML ,例如:
在 man 页面成为 unix 上既定的文档格式之后和 Web 发明之前的一段时间,GNU项目引入了info文档格式,比 man 更先进,同时坚持为文本终端设计的简单标记。与 man 相比,info 的主要创新是拥有多页文档,其中包含指向其他页面的超链接。Info 仍然是 GNU 项目的首选文档格式,尽管大多数 Info 页面是从也可以生成 HTML的Texinfo源(或有时其他格式)生成的。当程序的信息文档存在时,它通常是主要手册,而手册页仅包含有关命令行参数的基本信息。
Cal*_*leb 44
首先,它不是链接。这只是一个下划线。手册页只是带有一些终端可以处理的简单格式的文本文档。下划线只是一个亮点,不涉及“链接”。
普通man命令只是一个文本格式化程序。事实上,该man命令甚至不显示文本,man只是格式化存储在手册页文件[1] 中的信息,并将格式化的输出发送到另一个程序(通常less),将格式化的输出显示到屏幕上。这些显示程序没有链接的概念。
有一些特殊的文档读者可能能够查看这样的格式并做出有根据的猜测,这样的突出显示可能表明存在可以拉出并创建链接的相关手册页,但我不知道哪些呢。也许pinfo?
如果您想要带有超链接的类似 Web 的格式,您几乎可以在网上找到任何添加了链接的 UNIX 手册页。尝试man [anything]在 google 中输入,您几乎肯定会在第一次点击时得到一个。
在您的示例中,视觉突出显示是一个线索,它是另一个程序名称,它有自己的手册页,您可以轻松地提取该手册页。试试man 1 top。1 表示要查看的手册页部分。有关这些部分的说明,请参阅此问题:手册页中的数字是什么意思?
[1]如果您man在文本编辑器中打开页面文件,您将看到man未格式化以方便阅读的原始页面。原始man页面是用一种称为 的标记语言编写的troff。有关troff如何编写man页面的更多信息,请参见:https : //liw.fi/manpages/。
Ann*_*sum 12
让我尝试从某种意义上解释您的问题,即我尝试遵循您的工作流程。您可能想要的是man页面中的组合键,可将您直接引导至您正在阅读的带下划线的命令。因此,不必安装其他东西,也不必打开另一个控制台并忘记确切的语法。
这个最简单的解决方案是感叹号(如果您less用于显示手册页)并且您想要转到带下划线的top:
!man top
Run Code Online (Sandbox Code Playgroud)
或者
!man 1 top
Run Code Online (Sandbox Code Playgroud)
您必须q多次按下才能将它们全部关闭。另请注意,如果LESSSECURE=1设置为环境变量,这将无法less在安全模式下运行并且不允许您使用!. 它会告诉您诸如“命令不可用”之类的信息。
我有一个(几个)黑客。
将其放入 ~/.bashrc 或 ~/.zshrc 中
function man(){
for arg in "$@"; do
vim -c 'execute "normal! :let no_man_maps = 1\<cr>:runtime ftplugin/man.vim\<cr>:Man '"${arg}"'\<cr>:wincmd o\<cr>"'
done
}
Run Code Online (Sandbox Code Playgroud)
截屏..
阿西内玛..
https://asciinema.org/a/130131
现在..
例如,当您输入 时,它将在vimman vim中打开此手册页
man man vim例如,如果你输入,它会先打开man的手册,退出 vim 后,它会打开 的vim手册当您在底部的另一个手册页( “另请参阅”部分)上按K(大写)时,您将跳转到本手册(不幸的是在less 寻呼机内- 这是因为我们有;如果您没有这样做,那么 vim 将强制这样做,你将无法轻松地录制宏,并且 vim 可能会在其他方面表现得不稳定)。klet no_man_maps = 1q:q
你会得到非常漂亮的语法高亮,因为你已经加载了ftplugin/man.vim并且 ft (自动)设置为man.
您可以复制和粘贴,在 vim 中自由导航,甚至修改缓冲区和:w ~/usefulfile. 您可以执行在 vim 中通常执行的所有操作,包括记录宏、使用 复制到剪贴板"+y(如果有的话+clipboard)等等。
我发现它比less好得多。
我发现的唯一一个小挫折(如果你使用 less 作为寻呼机,这个挫折仍然存在)是你想在一个 vim 会话中打开多个手册。我真的没有办法做到这一点。
一些注意事项:
如果你尝试保存缓冲区,你会得到E382: Cannot write, 'buftype' option is set
你仍然可以保存:w /tmp/man.man
.man扩展名保存它,那么打开它会将文件类型设置为man适合您.man将 ft 设置为man:set ft=manautocmd VimEnter *.~ echom 'hooray, we are using vim for man pages!'例如,如果您需要在打开手册页时执行某些操作,则可以使用。
我已将以下内容放入我的 vimrc 中,以便我可以按K尝试打开手册,然后按G返回上一个手册:
augroup man
autocmd!
autocmd VimEnter *.~ nnoremap B :execute "normal! `Z"<cr>
autocmd VimEnter *.~ nnoremap <buffer> K :execute "normal! mZyiw:Man \<lt>c-r>\"\<lt>cr>"<cr>
augroup END
Run Code Online (Sandbox Code Playgroud)
把它放在你的 ~/.bashrc 或 ~/.zshrc 中
function man(){
declare -a args
for arg in "$@"; do
command man "$arg" > "/tmp/${arg}.man"
args+=("/tmp/${arg}.man")
done
vim "${args[@]}"
}
Run Code Online (Sandbox Code Playgroud)
截屏..
阿西内玛..
https://asciinema.org/a/9Q6Si90Pi46cDVUknxFxfIwsv
这解决了hack 1和less面临的问题(现在你可以在一个缓冲区中查看多个手册),但它不太优雅。
笔记:
重要的是如果你想让hack2工作,那么你必须将:let no_man_maps = 1你的~/.vimrc. 这是因为 vim 会源.../vim80/man.vim并将q被强制重新映射到:q.
涉及更多清理工作(现在您将每个手册存储到/tmp/*.man)
但是,您现在可以在一个会话中查看多个手册页,如上所述
如果你按K,你仍然会打开一个新的 vim 会话,但是
autocmd VimEnter man.~ nnoremap <buffer> K :execute "normal! Byt(:silent !man \<c-r>\" > /tmp/\<c-r>\".man\<cr>:edit /tmp/\<c-r>\".man\<cr>"或类似的疯狂的事情(未经测试)