Seção aberta do homem 3

10

Estou usando o Vim para desenvolver C no Linux. Quando pressiono Kpara abrir a página do manual da palavra subjacente, não tenho controle sobre qual seção do manual é aberta. Existe uma maneira de especificar isso em algum lugar?

stdcall
fonte
Sugestões maravilhosas: acabei adicionando esta set keywordprg=man\ 3\ -sao meu .vimrc
stdcall
1
Você não quer programas de “ajuda” diferentes para idiomas diferentes?
D. Ben Knoble
Nunca necessário para homem lançamento de dentro vim para algo que não seja o capítulo 3
stdcall
2
Você pode querer definir este keywordprg em um ftplugin de modo que você mantenha um trabalho Kem outros tipos de arquivos:h ftplugin
statox

Respostas:

18

Citando a partir da documentação

  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 -sparece ser o padrão para a 'keywordprg'configuração, portanto, basta usar uma contagem antes de digitar Kparece fazer o truque.

(Testado com sucesso 2Ke 3Ke o cursor estar em open).

Christian Brabandt
fonte
3
Porra, eu estava 43 segundos atrasado! :)
statox
8

De :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.

Então 3Kdeve fazer o truque

statox
fonte
4

Se você está no Linux, provavelmente usa mandb's mane pode controlar a ordem na qual as seções são pesquisadas. Veja man 1 man:

MANSECT
Se $ MANSECT estiver definido, seu valor será uma lista de seções delimitada por dois pontos e será usada para determinar quais seções manuais procurar e em que ordem. O padrão é "1 nl 8 3 2 3posix 3pm 3perl 3am 5 4 9 6 7", a menos que seja substituído pela diretiva SECTION em /etc/manpath.config.

Portanto, outra opção é definir nos seus arquivos de inicialização do shell:

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

Ou no seu vimrc:

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

(Além disso, dependendo do que você está programando, a seção 2 também pode precisar de uma prioridade mais alta.)

(Ou, como diz a página de manual, defina todo o sistema /etc/manpath.config.)

Isso também funciona para o homem do FreeBSD .

muru
fonte
isso é o que -sfaz internamente
Christian Brabandt
1
De fato, -ssubstitui MANSECT. Mas isso é útil para definir uma lista de prioridades em vez de forçar uma seção específica (o que <count>Kservirá), que pode ser mais útil. Por exemplo, se open(3posix)não estiver disponível, open(2)ainda seria útil (provavelmente mais). man -s 3 opensimplesmente ignoraria open(2).
Muru