使用 Vim 作为手册页时如何防止 `$MANSECT` 被更改?

使用 Vim 作为手册页时如何防止 `$MANSECT` 被更改?

在文件内,~/.zshenv我导出环境变量的值MANSECT(该值取自/etc/manpath.config):

export MANSECT=1:n:l:8:3:2:3posix:3pm:3perl:5:4:9:6:7

$ man当您未指定时,此变量似乎控制搜索联机帮助页的部分的顺序。

例如,此命令打开printf手册第一部分中的联机帮助页:

$ MANSECT=1:2:3 man printf

因为我没有指定我感兴趣的节号,并且因为该节位于内的1节之前。3$MANSECT

相反,此命令打开printf手册第三部分中的联机帮助页:

MANSECT=3:2:1 man printf

因为该部分位于中的3部分之前。1$MANSECT


现在,根据 Vim 的帮助 ( :help manpager.vim),Vim 可以用作手册页:

export MANPAGER="vim -M +MANPAGER -"

如果我使用以下$ vim命令启动 Vim,并询问 的值$MANSECT,我会得到原始值(在 shell 中导出的值):

$ export MANSECT=1:2:3
$ export MANPAGER="vim -M +MANPAGER -"
$ vim
:echo $MANSECT

最后一个在 Vim 命令行上:echo正确打印。1:2:3

但是如果我用以下$ man命令启动 Vim:

$ export MANSECT=1:2:3
$ export MANPAGER="vim -M +MANPAGER -"
$ man man
:echo $MANSECT

最后一个:echo仅在 Vim 的命令行上打印1,而不是1:2:3.


有关我的机器的一些信息:

  • vim --version:VIM - Vi IMproved 8.1 包含的补丁:1-495
  • man --version:2.7.5
  • 操作系统:Ubuntu 16.04.5 LTS
  • 终端模拟器:rxvt-unicode v9.22
  • 终端多路复用器:tmux 2.8
  • $TERM:tmux-256color
  • 外壳:zsh 5.6.2-dev-0 (x86_64-pc-linux-gnu)

使用 Vim 作为手册页时是否可以防止$MANSECT被更改?

我之所以问这个问题是因为Neovim 人插件如果您将 Neovim 作为联机帮助页启动,则遇到以下问题:您无法打开手册第一部分之外的联机帮助页:

$ export MANSECT=1:n:l:8:3:2:3posix:3pm:3perl:5:4:9:6:7
$ export MANPAGER='nvim +Man!'
$ man man
:Man mount

最后一个命令引发以下错误:

man.vim: command error (11) man -w mount: No manual entry for mount
See 'man 7 undocumented' for help when manual pages are not available.

这是因为$MANSECT已被截断为第一个节号 ( 1),并且其联机帮助页$ mount位于 节中8

相关内容