ctags+VIM的问题

发布于 2022-08-26 17:46:46 字数 188 浏览 24 评论 0

用ctags -R生成后, 每次进入VIM编辑都要手动执行一次set tags=..../tags, 想了个办法 用ctags -f 把tags文件放到指定的地方,然后在vimrc中设置set tags=.... ,最后发现确实能发现tags文件, 但是在跳转的时候,是根据tags文件为根目录来的,不是项目根目录,有什么办法可以不每次都set tags呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

寄人书 2022-09-02 17:46:46

你在 ctags 命令执行时指明生成的文件路径应该就好了吧。

我是这样子设置 tags 选项的:

set tags+=./../tags,./../../tags,./../../../tags

这样在项目里不太深的话总能找到这个项目的 tags 文件。

PS: taglist 和 tagbar 插件很好用的哦=w=

打小就很酷 2022-09-02 17:46:46
set tags=tags;  
set autochdir 

将上面两行写到在vimrc中

set tags=tags;这一句的分号很重要,意思是告诉vim 从Vim的工作目录开始查找tags文件,如果没找到,那么在父目录中去找,以此类推.但是Vim的默认工作目录是启动Vim时的目录并不是文件的当前目录,所以需要设置set autochdir,这样,Vim就会将工作目录设置为文件的当前目录,然后,Vim就可以从文件所在目录开始查找tags文件,如果没有找到那么去父目录中去找tags文件

参考:
http://vim.wikia.com/wiki/Sin...
https://stackoverflow.com/que...
http://blog.csdn.net/hitlion2...

很酷又爱笑 2022-09-02 17:46:46

除了设置" set tags+=./../tags,./../../tags,./../../../tags外,可以尝试下面的方法(例如内核的tags实在太大,最好不要自动载入,所以不推荐在项目特别大时这么做)

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

原文在此,我增加了目录层数,以及加入了GTAGS(参考GNU golbal)

注意:我的函数里GTAGS的[pre-path] (参考:help cscope)是当前目录是: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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文