我用bash编写了一个函数来查看vim中的manpages。
viman () { man "$@" | vim -R +":set ft=man" - ; }这很好,如果我将一个不存在的manpage传递给它,就会出现唯一的问题。它打印manpage不存在,但仍然使用空缓冲区打开vim。因此,我更改了函数,以检查错误代码(这里是16 ),如果manpage不存在,则退出。修改后的函数看起来有点像-
viman () { man "$@" | [[ $? == 16 ]] && exit 1 | vim -R +":set ft=man" - ; }但是,现在它什么也做不了了!
如果manpage <#>不存在,则只希望退出该程序,否则打开 manpage和 vim
发布于 2018-12-11 18:45:45
尝试如下:捕获man输出,如果成功启动vim
viman () { text=$(man "$@") && echo "$text" | vim -R +":set ft=man" - ; }发布于 2018-12-11 19:01:53
我喜欢检查man返回代码的想法;不过,您不能直接进入测试。您只需运行man两次:
viman () { man "$@" >/dev/null 2>&1 && man "$@" | vim -R +":set ft=man" - ; }只有当第一次调用man ... | vim ...成功时,才会运行man。
发布于 2018-12-12 00:34:34
有一个名为MANPAGER的环境变量,它可以用来使man调用所需的命令来显示手册。这样做的好处是直接调用man,如果不存在命令页,它将根本不运行寻呼机。
因此,包装器脚本,比如在~/bin/vimman中:
#! /bin/sh
vim -R +":set ft=man" -在shell初始化文件中包含以下内容:
export MANPAGER="$HOME/bin/vimman"您可以在Vim中直接运行man foo到手册页。
(取决于所使用的man命令,您还可以拥有:
export MANPAGER='vim -R +":set ft=man" -'直接代替包装器脚本。)
如果您有一个足够新的Vim,您可以使用--not-a-term选项来阻止Vim抱怨stdin不是TTY。
无耻的插头:我写一个小插件是为了方便使用Vim作为传呼机。
https://unix.stackexchange.com/questions/487415
复制相似问题