想要在vim中用omnicompletion或者omnicppcompletion的功能,實現(xiàn)對glibc函數(shù)的自動補齊,比如在C源文件中輸入pri,然后按C-x C-o能夠彈出列表補齊printf,諸如此類。
現(xiàn)在的問題是,我用ctags對glibc-headers-2.15-57.fc17.i686安裝的標準C頭文件進行處理,生成tags_glibc文件。但是在C源文件中輸入pri,然后C-x C-o,彈出的菜單里面,只有stdio2.h中的printf的定義和原型聲明,而沒有stdio.h的printf聲明。令人奇怪的是,我用vim查看生成的tags文件,搜索printf,發(fā)現(xiàn)有如下三條entry:
printf /usr/include/bits/stdio2.h /^printf (__const char *__restrict __fmt, ...)$/;" f printf /usr/include/bits/stdio2.h 108;" d printf /usr/include/stdio.h /^extern int printf (__const char *__restrict __format, ...);$/;" p
最后一條表明ctags的確生成stdio.h中的printf的原型聲明(類型為p),但是為什么我在insert模式下,輸入pri<C-x C-o>,卻看不見第三條呢?我錯在哪里了??
fprintf(stdio.h,stdio2.h中都有該符號),memcpy(string.h,string3.h中都有)等函數(shù)也出現(xiàn)了同樣的現(xiàn)象。
我的系統(tǒng)是fedora17(3.6.3-1.fc17.i686),ctags是最新版,5.8的
用的ctags命令如下:
ctags --langmap=c:.c.h --language-force=c -h .h --c-kinds=+pxl --exclude='tags*' --exclude='*swp' --exclude='*~' --exclude='*[!ch]' -I _THROW -I __attribute__+ -I __wur -f tags_glibc -L glibc-headers-filelist.txt
其中,glibc-headers-filelist.txt的生成是如下命令:
rpm -ql glibc-headers |grep '\.h' >glibc-headers-filelist.txt
各位vim高手,請問有沒有辦法能夠比較好地生成glibc頭文件的tags文件
-e
包括外部標簽。 ctags 通常會忽略函數(shù)或變量的 extern 聲明;這在為您自己的程序生成標簽時非常方便。系統(tǒng)標準頭文件中的 extern 聲明的標簽文件可能是一個非常方便的資源,因此創(chuàng)建了這個 -e 標志。
來自http://elvis.the-little-red-haired-gi...
使用tags文件時,需要在tags所在的目錄打開vim。
不同目錄時需要在vim里設(shè)置tags變量,變量值為tags文件路徑。例如:
:set tags=....../tags_glibc