Tanto quanto eu entendo, o Vim tem um suporte interno para tags ( ctags
neste caso)
Agora eu tenho uma fonte C comum e um arquivo de cabeçalho C. O arquivo de cabeçalho possui void foo(void);
e o arquivo de origem possui void foo(void) { /* */ }
.
Agora, quando estou no arquivo de origem, posso usá- :tags foo
lo, ele irá para a definição de função no arquivo de origem. Mas se eu usar :tnext
agora, ele não irá para a declaração da função no arquivo de cabeçalho.
Eu sinto que isso deve ser de alguma forma possível. É isso?
tags
ctags
filetype-c
hgiesel
fonte
fonte
ctags
? Veja também:h gD
.ctags -R
, que foi o erroRespostas:
Ok, eu fiz isso:
Tudo tem a ver com
ctags
: Primeiro, crie dois arquivos chamadosfoo.c
efoo.h
teste-os:foo.h
Anote:Em
foo.c
write down:E no diretório em que esses dois arquivos estão, execute:
Você obtém uma longa lista de idiomas com esses tipos de tags. Encontre C. Observe a seguinte linha:
Eu chamaria isso de declaração de função, mas de qualquer maneira. Portanto, você precisa ativar tags para protótipos de funções ao executar
ctags
. Você faz isso chamando:Observe que o mesmo se aplica a outros idiomas, por exemplo:
Agora você pode abrir
foo.c
(vim foo.c
) e entrar:tag bar
. Ele mostrará a definição da função. Entre:tnext
e você irá pularfoo.h
para a declaração debar
.No entanto, observe também que
ctags
não se importa com a correção. Por exemplo, abar
ação declarativa não pode se aplicar à definição debar
, pois eu não incluí o arquivo de cabeçalho.fonte