首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何防止在使用Vim作为man寻呼机时,手册页的名称被截断?

如何防止在使用Vim作为man寻呼机时,手册页的名称被截断?
EN

Unix & Linux用户
提问于 2019-09-13 11:19:52
回答 1查看 146关注 0票数 1

考虑以下shell命令:

代码语言:javascript
运行
复制
$ MANPAGER='vim -Nu NONE -R -' man git-credential-cache

它使man(1)在Vim中显示git-credential-cache(1)的手册页。

但是,手册页的名称(显示在缓冲区的第一行)是GIT-CREDENTIAL-CAC(1)。请注意名称末尾缺少HE的情况:

相反,我希望这个名字:

代码语言:javascript
运行
复制
GIT-CREDENTIAL-CACHE(1)
                  ^^

我运行strace(1)查看man(1)使用了哪些系统调用:

代码语言:javascript
运行
复制
$ MANPAGER='vim -Nu NONE -R -' strace -o log man git-credential-cache

在日志文件的末尾,我可以看到一个read(2)write(2)系统调用,使用缓冲区名GIT-CREDENTIAL-CAC(1)

代码语言:javascript
运行
复制
read(7, "GIT-CREDENTIAL-CAC(1)           "..., 4096) = 2720
...
write(8, "GIT-CREDENTIAL-CAC(1)           "..., 2720) = 2720

因此,截断手册页名称的似乎是man(1)而不是vim(1)

下面是日志文件的完整内容,另一个日志文件包含相同strace(1)命令的输出,但还包含跟踪子进程的附加-f参数,以及导致man(1)进程的进程树:

代码语言:javascript
运行
复制
$ pstree -lsp $(pidof man)
systemd(1)---lightdm(947)---lightdm(1114)---upstart(1123)---sh(1324)---xfce4-session(1335)---xfce4-panel(1347)---panel-8-whisker(1396)---xterm(22546)---bash(22547)---strace(23182)---man(23184)---vim(23194)

是否有办法防止man(1)GIT-CREDENTIAL-CACHE(1)截断为GIT-CREDENTIAL-CAC(1)

我之所以问这个问题,是因为截断会导致在使用新维曼插件时显示错误消息:

代码语言:javascript
运行
复制
            ┌ Taken from `:h man.vim` in Neovim
            ├────────┐
$ MANPAGER='nvim +Man!' man git-credential-cache
man.vim: command error (7) man -w git-credential-cac: No manual entry for git-credential-cac

环境:

代码语言:javascript
运行
复制
$  lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.6 LTS
Release:        16.04
Codename:       xenial

$ man --version
man 2.7.5

$ vim --version | head -n2
VIM - Vi IMproved 8.1 (2018 May 18, compiled Sep  3 2019 11:05:36)
Included patches: 1-1967

$ nvim --version | head -n1
NVIM v0.4.0-1856-g82d52b229
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-09-13 11:36:28

截断它的也不是man

代码语言:javascript
运行
复制
$ zcat /usr/share/man/man1/git-credential-cache.1.gz | head -n 10
'\" t
.\"     Title: git-credential-cache
.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 
.\"      Date: 09/28/2018
.\"    Manual: Git Manual
.\"    Source: Git 2.11.0
.\"  Language: English
.\"
.TH "GIT\-CREDENTIAL\-CAC" "1" "09/28/2018" "Git 2\&.11\&.0" "Git Manual"

因此,您将不得不摆弄git用于生成其手册并重新构建它们的任何东西(上次我检查它们使用的是asciidoc --宇宙中最懒惰的东西;-)。

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/541556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档