Maison  >  Questions et réponses  >  le corps du texte

Problème avec ctags+VIM

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 ?

过去多啦不再A梦过去多啦不再A梦2712 Il y a quelques jours659

répondre à tous(2)je répondrai

  • 某草草

    某草草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=

    répondre
    0
  • 天蓬老师

    天蓬老师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实在太大,最好不要自动载入,所以不推荐在项目特别大时这么做)

    vim 自动上级目录查找递归加载ctags和cscope

    原文在此,我增加了目录层数,以及加入了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)
    🎜Remarque : Le [pré-chemin] de GTAGS dans ma fonction (référence : help cscope) est le résultat du fait que le répertoire actuel est :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
    

    répondre
    0
  • Annulerrépondre