Rumah  >  Soal Jawab  >  teks badan

Masalah dengan ctags+VIM

Selepas menjana dengan ctags -R, anda mesti melaksanakan set tags=..../tags secara manual setiap kali anda memasukkan penyuntingan VIM. Saya memikirkan cara untuk menggunakan ctags -f untuk meletakkan fail tag di tempat yang ditentukan, dan kemudian menetapkan set tags=.... dalam vimrc Akhirnya, saya mendapati bahawa fail tag memang boleh ditemui, tetapi apabila melompat, ia berdasarkan fail tag Ia datang dari direktori akar, bukan direktori akar projek Adakah terdapat sebarang cara untuk mengelak daripada menetapkan tag setiap kali?

过去多啦不再A梦过去多啦不再A梦2712 hari yang lalu661

membalas semua(2)saya akan balas

  • 某草草

    某草草2017-05-16 16:43:54

    Anda hanya perlu menentukan laluan fail yang dijana semasa melaksanakan arahan ctags.

    Ini adalah cara saya menetapkan pilihan tags:

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

    Dengan cara ini, jika anda tidak terlalu mendalami projek ini, anda sentiasa boleh mencari fail tag projek ini.

    PS: pemalam taglist dan tagbar sangat berguna =w=

    balas
    0
  • 天蓬老师

    天蓬老师2017-05-16 16:43:54

    Selain menetapkan " set tags+=./../tags,./../../tags,./../../../tags, anda boleh mencuba kaedah berikut (Sebagai contoh, jika teg kernel terlalu besar, sebaiknya jangan memuatkannya secara automatik, jadi ini tidak disyorkan apabila projek itu sangat besar) " set tags+=./../tags,./../../tags,./../../../tags外,可以尝试下面的方法(例如内核的tags实在太大,最好不要自动载入,所以不推荐在项目特别大时这么做)

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

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

    注意:我的函数里GTAGS的[pre-path] (参考:help cscope)是当前目录是:pwd

    vim secara automatik mencari direktori peringkat atas dan memuatkan ctag dan cscope secara rekursif

    Teks asal ada di sini, saya menambah bilangan tahap direktori dan menambah GTAGS (rujuk GNU golbal)
    🎜Nota: [pra-laluan] GTAGS dalam fungsi saya (rujukan: help cscope) adalah hasil daripada direktori semasa ialah :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
    

    balas
    0
  • Batalbalas