Maison > Questions et réponses > le corps du texte
Après avoir généré avec ctags -R, vous devez exécuter manuellement set tags=..../tags à chaque fois que vous entrez dans l'édition VIM. J'ai pensé à un moyen d'utiliser ctags -f pour placer le fichier de balises à l'endroit spécifié, puis de définir set tags=.... dans vimrc Enfin, j'ai trouvé que le fichier de balises pouvait effectivement être trouvé, mais en sautant, il est basé sur le fichier de balises. Il provient du répertoire racine, pas du répertoire racine du projet. Existe-t-il un moyen d'éviter de définir des balises à chaque fois ?
某草草2017-05-16 16:43:54
Vous devez simplement spécifier le chemin du fichier généré lors de l'exécution de la commande ctags.
Voici comment définir les options tags
:
set tags+=./../tags,./../../tags,./../../../tags
De cette façon, si vous n'êtes pas trop impliqué dans le projet, vous pouvez toujours retrouver le fichier de tags de ce projet.
PS : les plug-ins taglist et tagbar sont très utiles =w=
天蓬老师2017-05-16 16:43:54
En plus de définir " set tags+=./../tags,./../../tags,./../../../tags
, vous pouvez essayer le méthodes suivantes (Par exemple, si les balises du noyau sont trop volumineuses, il est préférable de ne pas les charger automatiquement, cela n'est donc pas recommandé lorsque le projet est particulièrement volumineux) " set tags+=./../tags,./../../tags,./../../../tags
外,可以尝试下面的方法(例如内核的tags实在太大,最好不要自动载入,所以不推荐在项目特别大时这么做)
原文在此,我增加了目录层数,以及加入了GTAGS(参考GNU golbal)
注意:我的函数里GTAGS的[pre-path] (参考:help cscope)是当前目录是
:pwd
vim recherche automatiquement les répertoires de niveau supérieur et charge récursivement les ctags et cscope
Le texte original est ici, j'ai augmenté le nombre de niveaux de répertoire et ajouté des GTAGS (voir GNU golbal)
:pwd
🎜
🎜
function! AutoLoadCTagsAndCScope()
let max = 10
let dir = './'
let i = 0
let break = 0
while isdirectory(dir) && i < max
if filereadable(dir . 'GTAGS')
execute 'cs add ' . dir . 'GTAGS ' . glob("`pwd`")
let break = 1
endif
if filereadable(dir . 'cscope.out')
execute 'cs add ' . dir . 'cscope.out'
let break = 1
endif
if filereadable(dir . 'tags')
execute 'set tags =' . dir . 'tags'
let break = 1
endif
if break == 1
execute 'lcd ' . dir
break
endif
let dir = dir . '../'
let i = i + 1
endwhile
endf
nmap <F7> :call AutoLoadCTagsAndCScope()<CR>
" call AutoLoadCTagsAndCScope()
" http://vifix.cn/blog/vim-auto-load-ctags-and-cscope.html