Открытая секция 3

10

Я использую Vim для разработки C на Linux. Когда я нажимаю K, чтобы открыть справочную страницу для основного слова, у меня нет контроля над тем, какой раздел man открывается. Есть ли способ указать это где-нибудь?

STDCALL
источник
Замечательные предложения: я закончил тем, что добавил это set keywordprg=man\ 3\ -sк своему .vimrc
stdcall
1
Разве вам не нужны разные «справочные» программы для разных языков?
Д. Бен Кнобл
Никогда не нужно было запускать man изнутри vim для чего-то другого, кроме главы 3
stdcall
2
Возможно, вы захотите установить это ключевое словоprg в ftplugin, чтобы вы продолжали работать Kс другими типами файлов:h ftplugin
statox

Ответы:

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должно сделать свое дело

statox
источник
4

Если вы работаете в Linux, вы, скорее всего, используете mandb man, и вы можете контролировать порядок поиска разделов. Смотрите man 1 man:

MANSECT
Если установлено значение $ MANSECT, его значение представляет собой список разделов, разделенных двоеточиями, и используется для определения того, какие разделы вручную искать и в каком порядке. Значение по умолчанию: «1 nl 8 3 2 3posix 3pm 3perl 3am 5 4 9 6 7», если оно не отменено директивой SECTION в /etc/manpath.config.

Поэтому другой вариант - установить в ваших файлах инициализации оболочки:

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 может также нуждаться в более высоком приоритете.)

(Или, как написано на man-странице, установите общесистемный вход /etc/manpath.config.)

Это также работает для человека FreeBSD .

Мур
источник
это то, что -sделает внутренне
Кристиан Брабандт
1
Действительно, -sпереопределяет MANSECT. Но это полезно для установки списка приоритетов вместо форсирования определенного раздела (что <count>Kбудет делать), что может быть более полезным. Например, если open(3posix)нет в наличии, open(2)все равно будет полезно (вероятно, в большей степени). man -s 3 openбудет просто игнорировать open(2).
Муру