公开课第3节


10

我正在使用Vim在Linux上开发C。当我按下K以打开基本单词的手册页时,我无法控制要打开哪个手册节。有没有办法在某个地方指定它?


很棒的建议:我最终将其添加set keywordprg=man\ 3\ -s到我的.vimrc中
stdcall 18-10-16,9

1
您是否想要不同语言的不同“帮助”程序?
D. Ben Knoble

除了第3章外,无需从vim内部启动人员
stdcall

2
您可能需要在ftplugin中设置此K:h ftplugin
关键字prg,

Answers:


18

引用文档

  When 'keywordprg' is equal to "man -s", a count
  before "K" is inserted after the "-s".  If there is
  no count, the "-s" is removed.

man -s似乎是该'keywordprg'设置的默认设置,因此在键入之前简单地使用计数K似乎可以解决问题。

(已通过2K和成功测试,并且3K光标位于上open)。


3
该死的我迟了43秒!:)
statox

8

来自:h K

                            *K*
K           Run a program to lookup the keyword under the
            cursor.  [...]
            Special cases:
            - When 'keywordprg' is equal to "man" or starts with
              ":", a [count] before "K" is inserted after
              keywordprg and before the keyword.  For example,
              using "2K" while the cursor is on "mkdir", results
              in: 
                !man 2 mkdir
            - When 'keywordprg' is equal to "man -s", a count
              before "K" is inserted after the "-s".  If there is
              no count, the "-s" is removed.

所以3K应该做到这一点


4

如果您使用的是Linux,则可能会使用mandb的man,并且可以控制搜索部分的顺序。见man 1 man

MANSECT
如果设置了$ MANSECT,它的值是一个用冒号分隔的节列表,它用于确定要搜索哪些手动节以及以什么顺序搜索。除非被/etc/manpath.config中的SECTION指令覆盖,否则默认值为“ 1 nl 8 3 2 3posix 3pm 3perl 3am 5 4 9 6 7”。

因此,另一个选择是在您的外壳初始化文件中进行设置:

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

或在您的vimrc中:

let $MANSECT="3:3posix:3pm:3perl:3am:1:n:l:8:2:5:4:9:6:7"

(此外,根据您要编写的内容,第2部分可能还需要更高的优先级。)

(或者,如联机帮助页所述,在中设置系统范围/etc/manpath.config。)

这也适用于FreeBSD的man


这就是-s内部的
做法

1
实际上,-s覆盖MANSECT。但这对于设置优先级列表很有用,而不是强制执行特定的部分(这样<count>K做会有用),这可能会更有用。例如,如果open(3posix)不可用,open(2)它将仍然有用(可能更多)。man -s 3 open只会忽略open(2)
muru 18-10-16,11
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.