一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

vim下的ctags和taglist等的使用和配置

 TUBOSS 2015-02-28

1.ctags

 

(1)到 http://prdownloads./ctags/ctags-5.6.tar.gz

        下載ctags源碼ctags-5.6.tar.gz

 

(2)解壓并安裝

假設(shè)在家目錄下taogle用戶的目錄下:
tar zxvf ctags-5.6.tar.gz
cd ctags-5.6
./configure && make && make install

 

(3)使用

<1> 對于一個工程文件夾如:cd  /home/taogle/vimPlungTest/src

<2> 建立ctags文件,在該目錄下運行 ctags -R  

        —— "-R"表示遞歸創(chuàng)建,也就包括源代碼根目錄下的任何子目錄下的源程式(如果你的源碼是多層的目錄, 就去最上層的目錄)。從而在src目錄下建立了一個“tags”文件,"tags"文檔中包括這些對象的列表。

 

如果修改程序后,比如增加了函數(shù)定義,刪除了變量定義,tags文件不能自動rebuild,必須再次在當(dāng)前"tags"文件所在的目錄下運行 $ctags -R

 

 

l 用#define定義的宏
l 枚舉型變量的值
l 函數(shù)的定義、原型和聲明
l 名字空間(namespace)
l 類型定義(typedefs)
l 變量(包括定義和聲明)
l 類(class)、結(jié)構(gòu)(struct)、枚舉類型(enum)和聯(lián)合(union)
l 類、結(jié)構(gòu)和聯(lián)合中成員變量或函數(shù)
VIM用這個"tags"文檔來定位上面這些做了標(biāo)記的對象

 

注意:

運行vim的時候,必須在"tags"文檔所在的目錄下運行。否則,對于該例子還要在運行vim的時,用  " :set tags= /home/taogle/vimPlungTest/src " 命令來設(shè)定"tags"文檔的路徑,這樣vim才能找到"tags"文檔。

 

如果經(jīng)常在這個工程編程的話,可以將 " set tags= /home/taogle/vimPlungTest/src "這句話寫進(jìn)~/.vimrc 文件中去直接作為vim的配置文件。當(dāng)然這個路徑隨著工程目錄的變化要隨時作調(diào)整。(切記tags后面的"="一定不能有空格,否則vim會報 E518錯誤 )

 

強烈推薦以下的方法:在vimrc中加入以下的句子:

        if getfsize("vimscript")>0

                    source   vimscript

        endif

 

然后在工程tags文件所在的目錄下(如:" /home/taogle/vimPlungTest/src" )新建一個叫做“vimscript”的文件,在文件中添加以下的內(nèi)容:

     set tags= /home/taogle/vimPlungTest/src    "或者 /home/taogle/vimPlungTest/src/tags

     set tags+= /home/taogle/vimPlungTest/src/tags.lib  "這一句通常可以沒有

這樣每次啟動vim就會自動運行vimscript腳本中的句子,從而可以自動找到tags所在的目錄。

并在vimscript文件中加入如下一行就可實現(xiàn)在vim中每次打開vim編輯時都重新生成關(guān)于c++的tags文件:

   ! ctags -R --c++-kinds=+p --fields=+iaS --extra=+q --language-force=c++

      ——  ! command   //實現(xiàn)在vim中運行shell

 

或者為了更加簡單 ,在vimrc中添加以下的句子,就可以在進(jìn)入vim后,按下Ctrl+F12組合鍵(每當(dāng)有代碼更新的時候,時不時按下以更新tags),在當(dāng)前目錄下尋找所有的c/c++文件,從而在當(dāng)前目錄下建立tags文件:


 

map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR>

 

 

快捷鍵:

<1>     把光標(biāo)移到變量名或函數(shù)名上,然后按下"Ctrl-]"。用"Ctrl-o"或“Ctrl-t”退回原來的地方。
<2>     在函數(shù)中移動光標(biāo)
[{     轉(zhuǎn)到上一個位于第一列的"{"
}]     轉(zhuǎn)到下一個位于第一列的"{"
{      轉(zhuǎn)到上一個空行
}      轉(zhuǎn)到下一個空行 ([ and ] 也分別是兩個指令)
gd   轉(zhuǎn)到當(dāng)前光標(biāo)所指的局部變量的定義
*      轉(zhuǎn)到當(dāng)前光標(biāo)所指的單詞下一次出現(xiàn)的地方
#     轉(zhuǎn)到當(dāng)前光標(biāo)所指的單詞上一次出現(xiàn)的地方

 

2. taglist

 

taglist的功能是即時生成當(dāng)前文件的函數(shù)列表和全局變量列表,便于索引。 能夠列出源文檔中的tag(function, class, variable, etc)并跳轉(zhuǎn).

注意:taglist依賴于ctags,所以要先裝ctags,否則taglist裝了也沒法用!

 

(1) 在http://vim./scripts/download_script.php?src_id=6416 下載得到 taglist_42.zip


(2)解壓得到兩個文檔(假設(shè)在zip文件在/home/taogle文件夾下)

cd /home/taogle

$ unzip -d taglist taglist_42.zip
$ cd taglist
$ tree


.
|-- doc
| `-- taglist.txt
`-- plugin
`-- taglist.vim   

 

(3)安裝
cp doc/taglist.txt    /usr/share/vim/vim72/doc/                 
--taglist 幫助文件
cp plugin/taglist.vim   /usr/share/vim/vim72/plugin/        -- taglist 插件

 

(4)配置和使用

啟動vim,可使用 “:helptags .”來配置好幫助文件,并能夠用來查看;

重啟vim,用“:TlistToggle”來打開和關(guān)閉taglist窗口。

 

 

在 /usr/share/vim/中的文件vimrc中添加關(guān)于taglist的常用配置命令如下:

==============================

let Tlist_Ctags_Cmd = '/usr/bin/ctags'   "設(shè)定Linux系統(tǒng)中ctags程序的位置
let Tlist_Show_One_File=1    "不同時顯示多個文件的tag,只顯示當(dāng)前文件的
let Tlist_Exit_OnlyWindow=1  "如果taglist窗口是最后一個窗口,則退出vim
let Tlist_Use_Right_Window = 1         "在右側(cè)窗口中顯示taglist窗口
"let Tlist_Use_SingleClick= 1    " 缺省情況下,在雙擊一個tag時,才會跳到該tag定義的位置

let Tlist_Auto_Open=1    "在啟動VIM后,自動打開taglist窗口
let Tlist_Process_File_Always=1  "taglist始終解析文件中的tag,不管taglist窗口有沒有打開

let Tlist_File_Fold_Auto_Close=1 "同時顯示多個文件中的tag時,可使taglist只顯示當(dāng)前文件tag,其它文件的tag都被折疊起來

 

==============================

 

(5)使用

 

<1> 切換函數(shù)列表的開、關(guān)

     ==> 或者使用  “:TlistToggle” 在打開和關(guān)閉間切換

     ==> 可以用 “:TlistOpen” 打開taglist窗口,用“:TlistClose”關(guān)閉taglist窗口。

     ==> 在vimrc中使用如下面的映射,就可以使用 “,tl”  鍵就可以打開/關(guān)閉taglist窗口:

map <silent> <leader>tl :TlistToogle<cr>



<2> 在正常編輯區(qū)域和tags區(qū)域中切換
      ctrl+w+w

<3> 定位指定內(nèi)容
在tags區(qū)域中,把光標(biāo)移動到變量、函數(shù)名稱上,然后敲回車(或者是雙擊某個tag),就會自動在正常編輯區(qū)域中定位到指定內(nèi)容了。

在taglist窗口中,可以使用下面的快捷鍵


<CR>            跳到光標(biāo)下tag所定義的位置,用鼠標(biāo)雙擊此tag功能也一樣
o                    在一個新打開的窗口中顯示光標(biāo)下tag
<Space>   (空格)顯示光標(biāo)下的tag的原型定義,在vim
u                    更新taglist窗口中的tag
s                    更改排序方式,在按名字排序和按出現(xiàn)順序排序間切換
x                    taglist窗口放大和縮小,方便查看較長的tag
+                    打開一個折疊,同zo
-                    將tag折疊起來,同zc
*                    打開所有的折疊,同zR
=                   將所有tag折疊起來,同zM
[[                   跳到前一個文件
]]                   跳到后一個文件
q                  關(guān)閉taglist窗口
<F1>          顯示幫助

 

 

Taglist插件還提供了很多Ex命令,甚至可以用這些命令創(chuàng)建一個taglist的會話,然后在下次進(jìn)入VIM時加載此會話。

Taglist插件還可以與winmanager插件協(xié)同使用。

 

 

3.  omnicppcomplete 插件(讓vim支持代碼自動補全)

 

插件:omnicppcomplete

軟件:ctags

ctags一般系統(tǒng)默認(rèn)就有。

下載并安裝插件 omnicppcomplete:

假設(shè)在家目錄下存在.vim文件夾, 如:     /home/taogle/.vim,如果不存在,在家目錄下建立.vim目錄;然后使用以下的命令:

            unzip omnicppcomplete-0.41.zip   -d    /home/taogle/.vim (或者使用:$HOME/.vim)

從而在 /home/taogle/.vim下面解壓出after、autoload、doc三個文件夾。至此 omnicppcomplete的安裝已經(jīng)完成。

 

千萬要注意 :在unzip前面不能加sudo,否則會使得解壓出的三個文件夾屬性為不可寫(no write),從而造成 omnicppcomplete的不可用,關(guān)于此,筆者有慘痛的教訓(xùn)見以下的帖子:

   http://forum./viewtopic.php?f=68&t=290726&p=2034064&sid=623c81b6d292d6759a991099b3ebfb24#p2034064


再運行vim,然后在vim的命令模式下輸入 :helptags $HOME/.vim/doc ,這樣可以添加omnicppcomplete的幫助文件到vim。

你可以繼續(xù)輸入:h omnicppcomplete來查看插件提供的文檔,里邊有安裝和使用的所用方法。

在你的vim配置文件(~/.vimrc,沒有可以新添加一個)加上以下幾句:

set nocp
filetype plugin on

 

//可選項

set completeopt=longest,menu
set completeopt=menuone

 

使用方法:

omnicppcomplete主要依賴ctags生成的tags文件來判斷補全的,所以首先應(yīng)該生成一定的信息。也就是說應(yīng)該先把類寫好,然后再生成tags,以后出現(xiàn)對象的 ”.” 或 ”->”成員操作時它自動尋找成員函數(shù)。

在vim編輯文件時按Ctrl+F12,ctags會把這個文件所在目錄以及子目錄的所有文件信息收集生成一個名為tags的文件存在當(dāng)前編輯文件 所在目錄。然后就可以實現(xiàn)代碼自動補全咯。 在~/.vimrc中添加的 map…… 那句宏就實現(xiàn)這個功能。注意,如果要讓新編寫的文件可以使用則需先寫入,命令為 :w

如果在補全時受不了[預(yù)覽]窗口的打擾可以打開vim配置文件加入

set completeopt=menu

 

 

4.NERD_commenter.vim

注釋插件,用來注釋掉代碼的工具,支持“//”、“/* */”兩種代碼注釋方式。

               下載插件

安裝很簡單,將解壓的doc文件放在vimfile/doc下,另一個vim文件放在vimfile/plugin下面……

也是程序員非常實用的一款插件,支持各種語言的補全,只要你能想到的,放心他絕對注釋的了,而且還支持單行注釋,批量注釋,等各種命令映射,在這里,我把最常用的鍵映射在vimrc中配置了一下。

"對NERD_commenter的設(shè)置
let NERDShutUp=1
      "支持單行和多行的選擇,//格式
map <c-h> ,c<space>

這樣的話,在光標(biāo)所在行上,按下一次ctrl+h是注釋,再按下一次是取消注釋。

而其內(nèi)建的指令,cm是多行注釋,類似C++的/**/,,cu是取消注釋。


其他的命令:

在Normal或者Visual 模式下:

    * ,ca,在可選的注釋方式之間切換,比如C/C++ 的塊注釋/* */和行注釋//
    * ,cc,注釋當(dāng)前行
    * ,c,切換注釋/非注釋狀態(tài)
    * ,cs,以”性感”的方式注釋
    * ,cA,在當(dāng)前行尾添加注釋符,并進(jìn)入Insert模式
    * ,cu,取消注釋
    * Normal模式下,幾乎所有命令前面都可以指定行數(shù)
    * Visual模式下執(zhí)行命令,會對選中的特定區(qū)塊進(jìn)行注釋/反注釋

 

5.DoxygenToolkit.vim 由注釋生成文檔,并且能夠快速生成函數(shù)標(biāo)準(zhǔn)注釋 

下載地址

安裝:將下載的DoxygenToolkit.vim直接放在vimfile/plugin文件夾下面……

配置:


map fg : Dox<cr>
map fn: DoxAuthor<cr>
map fl: DoxLic<cr>
let g:DoxygenToolkit_authorName="Taogle"
let g:DoxygenToolkit_licenseTag="My own license/<enter>"
let g:DoxygenToolkit_undocTag="DOXIGEN_SKIP_BLOCK"
let g:DoxygenToolkit_briefTag_pre = "@brief/t"
let g:DoxygenToolkit_paramTag_pre = "@param/t"
let g:DoxygenToolkit_returnTag = "@return/t"
let g:DoxygenToolkit_briefTag_funcName = "no"
let g:DoxygenToolkit_maxFunctionProtoLines = 30

 

這樣在vim的normal模式下,將光標(biāo)放到文件的頭部,按下fn就會對文件加上文檔注釋

將光標(biāo)放到函數(shù)的定義的前面一行,按下fg就會對函數(shù)進(jìn)行注釋

按下fl,進(jìn)行授權(quán)注釋

 

6.a.vim .cpp和.h文件快速切換

 下載地址

把下載的a.vim放到plugin下,不需要配置。

直接可以:A,打開.cpp和.h對應(yīng)的文件,:AV,打開.cpp和.h對應(yīng)的文件,并且分屏顯示

或者在vimrc中寫下如下的映射,快捷鍵映射

map av : AV<cr>        (最常用)

 

還有其他的幾個命令如下:

:A   switches to the header file corresponding to the current file being edited (or vise versa)
:AS   splits and switches
:AV   vertical splits and switches
:AT   new tab and switches
:AN   cycles through matches
:IH     switches to file under cursor
:IHS  splits and switches
:IHV  vertical splits and switches
:IHT  new tab and switches
:IHN  cycles through matches

因為這個插件都依賴于ctags管理的tags數(shù)據(jù),所以新編輯的內(nèi)容不會立即起效。所以應(yīng)該時不時按下Ctrl-F12更新tags。


7. AddCppClass: 幫助你快速添加一個C++類

http://www./scripts/script.php?script_id=2986

安裝方法同4.NERD_commenter


可以在vimrc中設(shè)置快捷鍵

map cs : AddCppClass<cr>

從而在使用時,在normal模式下按下cs就可以提示添加一個類……

 

8.grep.vim,在工程中快速查找
下載: http://www./scripts/script.php?script_id=311
安裝方法同6. a.vim

常用命令--> :Grep


但是這個插件挺難用的,只能慢慢摸索著用了



    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲中文字幕一区三区| 亚洲色图欧美另类人妻| 亚洲午夜av一区二区| 少妇一区二区三区精品| 国产亚洲中文日韩欧美综合网 | 中文字幕乱码一区二区三区四区| 99国产精品国产精品九九| 欧洲精品一区二区三区四区 | 日系韩系还是欧美久久| 91日韩欧美在线视频| 国产激情国产精品久久源| 一区二区三区亚洲天堂| 国产在线一区二区三区不卡| 一区二区三区欧美高清| 欧美区一区二在线播放| 午夜福利92在线观看| 欧美国产日本免费不卡| 亚洲国产av国产av| 国产传媒免费观看视频| 久久一区内射污污内射亚洲| 国产91色综合久久高清| 九九热在线免费在线观看| 久久精品视频就在久久| 黄色日韩欧美在线观看| 欧美一二三区高清不卡| 日本成人三级在线播放| 久久偷拍视频免费观看| 国产性色精品福利在线观看| 无套内射美女视频免费在线观看| 久草热视频这里只有精品| 亚洲精品福利视频你懂的| 日本不卡在线一区二区三区| 欧美自拍系列精品在线| 亚洲精品欧美精品一区三区| 国产一区欧美一区日韩一区| 午夜国产成人福利视频| 日本男人女人干逼视频| 欧美成人一区二区三区在线 | 免费观看日韩一级黄色大片 | 亚洲高清一区二区高清| 伊人久久五月天综合网|