Rumah > Soal Jawab > teks badan
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?
某草草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=
天蓬老师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实在太大,最好不要自动载入,所以不推荐在项目特别大时这么做)
原文在此,我增加了目录层数,以及加入了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
balas0