首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查看vim中的手册页

查看vim中的手册页
EN

Unix & Linux用户
提问于 2018-12-11 18:28:53
回答 5查看 3.3K关注 0票数 9

我用bash编写了一个函数来查看vim中的manpages

代码语言:javascript
复制
viman () { man "$@" | vim -R +":set ft=man" - ; }

这很好,如果我将一个不存在的manpage传递给它,就会出现唯一的问题。它打印manpage不存在,但仍然使用空缓冲区打开vim。因此,我更改了函数,以检查错误代码(这里是16 ),如果manpage不存在,则退出。修改后的函数看起来有点像-

代码语言:javascript
复制
viman () { man "$@" | [[ $? == 16 ]] && exit 1 | vim -R +":set ft=man" -  ; }

但是,现在它什么也做不了了!

如果manpage <#>不存在,则只希望退出该程序,否则打开 manpagevim

EN

回答 5

Unix & Linux用户

回答已采纳

发布于 2018-12-11 18:45:45

尝试如下:捕获man输出,如果成功启动vim

代码语言:javascript
复制
viman () { text=$(man "$@") && echo "$text" | vim -R +":set ft=man" - ; }
票数 8
EN

Unix & Linux用户

发布于 2018-12-11 19:01:53

我喜欢检查man返回代码的想法;不过,您不能直接进入测试。您只需运行man两次:

代码语言:javascript
复制
viman () { man "$@" >/dev/null 2>&1 && man "$@" | vim -R +":set ft=man" - ; }

只有当第一次调用man ... | vim ...成功时,才会运行man

票数 3
EN

Unix & Linux用户

发布于 2018-12-12 00:34:34

有一个名为MANPAGER的环境变量,它可以用来使man调用所需的命令来显示手册。这样做的好处是直接调用man,如果不存在命令页,它将根本不运行寻呼机。

因此,包装器脚本,比如在~/bin/vimman中:

代码语言:javascript
复制
#! /bin/sh
vim -R +":set ft=man" -

在shell初始化文件中包含以下内容:

代码语言:javascript
复制
export MANPAGER="$HOME/bin/vimman"

您可以在Vim中直接运行man foo到手册页。

(取决于所使用的man命令,您还可以拥有:

代码语言:javascript
复制
export MANPAGER='vim -R +":set ft=man" -'

直接代替包装器脚本。)

如果您有一个足够新的Vim,您可以使用--not-a-term选项来阻止Vim抱怨stdin不是TTY。

无耻的插头:我写一个小插件是为了方便使用Vim作为传呼机。

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

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

复制
相关文章

相似问题

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