• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            vim + ctags + taglist + cscope + cppcomplete + global 使用初探

            vim + ctags + taglist + cscope + cppcomplete + global 使用初探

            由于本人比較喜歡在終端狀態(tài)下的vim,所以gvim下的擴展使用的不多。這里介紹的也是我簡單的使用以上擴展的一點點體會。請大家指正。 emacs 不會用,也沒有比較過拉。



            1、大體感覺,(因為使用時間不長,不全面)
            總體使用的感覺定位查找類型定義基本可以用,但自動補全類型方面由于ctags的功能有限,感覺在大工程時,不一定很好用。

            大型程序一定要global的參與,它的分析比較全面,但在vim中的提示信息有限。

            taglist 精干,需要ctags的支撐,直接可以在左邊列出函數(shù)列表,全局參數(shù)列表。(可以排序)

            cscope 比較強大,可以對函數(shù)以及部分類型定義進行跳轉(zhuǎn),但有些BUG,好像在某些條件下無法正確找到分析枚舉的定義。

            cppcomplete 需要ctags的支撐,可以補全類型或者函數(shù)名(可不是普通Ctrl+P/N的那種)

            global 新版本可以嵌入vim使用,提供比較完整解析和類型索引,和cscope比,稍微差些的就是對類型引用的打印列表中沒有標識這個引用在什么函數(shù)中進行的。其實我的感覺global可能不是為vim所生,它的主要目的是用html的方式進行表達相關(guān)的關(guān)聯(lián)關(guān)系和索引,使用起來感覺沒有cscope的那么貼切。



            2、相關(guān)的擴展的安裝
            代碼:

            apt-get install exuberant-ctags cscope global

            cppcomplete 和 taglist 要到www.vim.org的擴展列表中下載。

            taglist 的下載地址:
            http://www.vim.org/scripts/script.php?script_id=273
            cppcomplete 的下載地址:
            http://www.vim.org/scripts/script.php?script_id=527

            然后在 建立目錄
            代碼:

            $HOME/.vim/plugin


            將下載的cppcomplete.vim 和 taglist.vim拷貝到$HOME/.vim/plugin中。
            安裝了global后,最新4.8.6 以上版本有帶vim的擴展,將它也拷貝到 $HOME/.vim/plugin

            debian sid 版本global安裝后擴展文件在
            代碼:

            /usr/share/doc/global/examples/gtags.vim.gz

            需要拷貝到$HOME/.vim/plugin后解壓,解壓方法:
            代碼:

            gzip -d gtags.vim.gz



            3、使用這些工具
            1)準備工作,先修改一下$HOME/.vimrc文件

            為了更好的使用cscope請?zhí)砑尤缦聝?nèi)容,這樣Ctrl-]的跳轉(zhuǎn)將由cscope的tags進行分析。
            代碼:

            if has("cscope") set csprg=/usr/bin/cscope set csto=0 set cst set nocsverb " add any database in current directory if filereadable("cscope.out") cs add cscope.out " else add database pointed to by environment elseif $CSCOPE_DB != "" cs add $CSCOPE_DB endif set csverb set cscopetag set cscopequickfix=s-,g-,c-,d-,t-,e-,f-,i- endif


            2)使用cscope
            cscope的tag生成最簡單的方法是:
            在你的開發(fā)工程的最上層目錄執(zhí)行cscope-indexer,它會遍歷下面的所有目錄,生成兩個文件,一個是cscope.files,這個文件記錄需要生成tags的文件名,可以手工修改,另一個是cscope格式的tags文件cscope.out。

            完成后,你在生成了cscope.out的目錄打開工程的任意文件,就可以使用Ctrl-]跳轉(zhuǎn)查找類型定義了。
            代碼:

            cs f s xxxx 查找xxxx出現(xiàn)的地方,它能詳細列出哪些文件的哪行的哪個函數(shù)引用,以及該行的內(nèi)容,比較不錯。 :)


            它的所有命令的使用請參考:
            代碼:

            help cscope


            3)使用taglist
            taglist的功能是即時生成當前文件的函數(shù)列表和全局變量列表,便于索引。
            在vim中命令模式下使用
            Tlist 打開或者關(guān)閉當前文件的索引;
            TlistSync 立即在打開的索引窗口中定位當前的光標所在位置屬于哪個函數(shù)或者結(jié)構(gòu)定義中。
            還有其他命令,請參考它的幫助文件。

            4)ctags的使用
            其實cscope是用來替代ctags功能的,ctags的應用廣泛,還有其他很多的軟件依賴它。

            例如要生成cppcomplete需要的tags文件的話,需要運行下面的命令:
            代碼:

            ctags -n -f cppcomplete.tags --fields=+ai --C++-types=+p * -L cscope.files

            注意,我在最后使用了參數(shù)"-L cscope.files" 這僅僅是借用拉cscope生成的文件索引來幫助ctags去查詢相關(guān)工程文件生成tags。

            5)使用cppcomplete
            cppcomplete的使用我只是簡單的發(fā)現(xiàn)它可以根據(jù)上述方法生成的tags文件來自動補全類型成員。
            使用很簡單,就是在你需要補全類型成員時,按F8鍵就可以拉。它一般第一次使用時,需要讓你確認是使用已有的tags文件還是再生成一次。一般我們自己控制生成tags文件的時機,它就使用就行拉。
            但它也受到ctags的分析能力比較差的限制,可能不是每次都能幫到你。

            6)使用global
            在工程的最上層目錄執(zhí)行命令:
            gtags
            等待它完成所有需要的global自己格式的tags的生成
            生成完后,需要的就是在生成tags的目錄打開你的工程的任意文件,用如下命令查詢相關(guān)類型引用和關(guān)聯(lián)關(guān)系:
            代碼:

            Gtags xxxx 查找xxxx的定義 Gtags -r xxxx 查找xxxx的引用 Gtags -s xxxx 查找xxxx出現(xiàn)的地方


            它的提示信息很有顯,不如cscope更直觀,但對大型分析的比較完整。
            有時它無法正常分析的類型 可以試試用帶-s 的參數(shù)的方式找找類型定義。再不行,我就不清楚拉


            4、草草的收尾
            我使用它們也是一點一點的摸索的沒有系統(tǒng)的完整的使用過,也受限于本人的Linux使用經(jīng)驗和工作關(guān)系,所以非常簡單的使用體會給大家一個參考,希望能有所幫助。更希望后來者能不斷補充相關(guān)的使用體會。大家都需要交流提高,呵呵。

            posted on 2006-09-21 20:11 楊粼波 閱讀(414) 評論(0)  編輯 收藏 引用

            国产精品九九九久久九九| 欧美综合天天夜夜久久| 亚洲国产成人久久精品99| 国产ww久久久久久久久久| 亚洲精品无码久久毛片| 亚洲va国产va天堂va久久| 久久九九精品99国产精品| 久久久WWW成人免费毛片| 97久久婷婷五月综合色d啪蜜芽 | 久久久久综合网久久| 中文字幕亚洲综合久久2| 久久精品无码一区二区WWW| 久久不见久久见免费视频7| 欧美午夜精品久久久久久浪潮| 国内精品伊人久久久久777| 精品免费久久久久国产一区| 久久这里只有精品首页| 精品水蜜桃久久久久久久| 18禁黄久久久AAA片| 久久国产精品免费一区二区三区| 中文精品久久久久人妻不卡| 久久国产免费直播| 久久免费视频网站| 国产精品国色综合久久| 亚洲精品97久久中文字幕无码| 国产精品99久久久久久猫咪| 国内精品久久久久伊人av| 奇米影视7777久久精品人人爽| 久久一本综合| 伊人久久大香线蕉成人| 国产午夜电影久久| 精品国产青草久久久久福利 | 久久精品99久久香蕉国产色戒| 久久婷婷五月综合成人D啪| 久久99中文字幕久久| 超级碰碰碰碰97久久久久| 国产91色综合久久免费分享| 久久这里只有精品首页| 久久天天躁狠狠躁夜夜2020一| 国产精品成人精品久久久| jizzjizz国产精品久久|