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

分享

轉(zhuǎn):自己動(dòng)手定制一個(gè)高效閱讀源代碼的vim

 dwlinux_gs 2014-10-14
 閱讀大型工程的源代碼時(shí),我們經(jīng)常需要在多個(gè)源文件之間實(shí)現(xiàn)函數(shù)、宏定義、外部變量等的跳轉(zhuǎn)查詢,但這些功能僅靠vim完成是困難的,所以還需借助一些額外的工具來打造一款合適自己的vim。
  
1、安裝VIM
  
   安裝vim比較簡單,也沒有特別要注意的地方,這里就不多講。如果你是在ubuntu系統(tǒng)下,直接采用:
  
$ sudo apt-get install vim或者$ sudo apt-get install vim-gnome。安裝好之后,試編輯一個(gè)文件,看看是否運(yùn)行正常(一般不會(huì)有問題)。然后看看自己的用戶目錄下有沒有一個(gè)vim隱藏配置文件:.vimrc文件和一個(gè).vim隱藏文件夾:.vim如果沒有,可以通過下面方式創(chuàng)建:
  
1)   打開vim,在命令行模式下輸入::!cp -i $VIMRUNTIME/vimrc_example.vim ~/.vimrc
  
就會(huì)在自己的用戶目錄下生成vim隱藏配置文件:.vimrc。
  
2)   cd到用戶目錄下,運(yùn)行下面命令:
  
$ mkdir -p /.vim/{plugin,doc,syntax}
  
就會(huì)產(chǎn)生三個(gè)目錄:~/.vim/plugin、~/.vim/doc、~/.vim/syntax

3)在自己的用戶目錄下新建  .vim  隱藏文件夾:
$ mkdir .vim   


2、ctag的配置
  
tags文件是實(shí)現(xiàn)跳轉(zhuǎn)功能的數(shù)據(jù)庫文件,就是它把我們送到我們想要去的地方的。比如我們在程序里調(diào)用一個(gè)函數(shù)i2c_master_recv,在某個(gè)時(shí)刻想查看這函數(shù)本身是怎么實(shí)現(xiàn)的。那只需把光標(biāo)停在關(guān)鍵詞上,再按一下組合鍵:“ctrl+]”, 就會(huì)立刻跳轉(zhuǎn)到庫函數(shù)i2c_master_recv的源代碼的地方,再按一下組合鍵 “ctrl+o” 就可以跳回來。
  
當(dāng)然如果你要查詢的函數(shù)是對(duì)一個(gè)系統(tǒng)調(diào)用的封裝,你就可以順著tags 提供的道路跳到內(nèi)核去查看源代碼是怎么寫的,當(dāng)然這時(shí)候可能會(huì)有不止簡單的兩層封裝定義,但我們一次次跳轉(zhuǎn)就可以深入其里,了解內(nèi)幕。
  
首先,我們要安裝ctags工具:
  
$ sudo apt-get install ctags
  
如果提示找不到軟件包c(diǎn)tags,就update一下你的軟件源,還不行的話試試把ctags改成 exuberant-ctags。下載完后,你就可以用它來產(chǎn)生標(biāo)簽文件tags了。
  
ctags常用命令列舉:
  
1)   建立數(shù)據(jù)庫命令
  
# ctags -R或者exuberant-ctags -R   // 這個(gè)命令是在終端命令行下執(zhí)行的(-R表示遞歸向下)
  
2)   在vim編輯器中瀏覽
  
:ta x   
  
跳轉(zhuǎn)到符號(hào)x的定義處,如果有多個(gè)符號(hào),直接跳轉(zhuǎn)到第一處
  
:ts x   
  
列出符號(hào)x的定義
  
:tj x
  
可看做上面兩個(gè)命令的合并,如果只找到一個(gè)符號(hào)定義,那么直接跳轉(zhuǎn)到符號(hào)定義處,如果有多個(gè),則讓用戶自行選擇。
  
Ctrl+]
  
跳轉(zhuǎn)到當(dāng)前光標(biāo)下符號(hào)的定義處,和ta類似。
  
Ctrl+t
  
跳轉(zhuǎn)到上一個(gè)符號(hào)定義處,和上面的配合基本上就能自由跳轉(zhuǎn)了。
  
:tn和:tp
  
是在符號(hào)的多個(gè)定義之間跳轉(zhuǎn)。
   
3、使用VIM插件TagList(源代碼結(jié)構(gòu)瀏覽)
  
Taglist是vim的一個(gè)插件,可以方便地在終端側(cè)邊顯示出當(dāng)前程序所有的函數(shù)、宏等信息,支持鼠標(biāo)雙擊跳轉(zhuǎn),對(duì)于規(guī)模比較大的代碼而言,這是一個(gè)非常實(shí)用功能。
  
下載鏈接:http://download.csdn.net/source/249784
  
下載完解壓,得到兩個(gè)文件夾 doc和plugin,將兩個(gè)文件夾存放到用戶目錄下的隱藏文件夾.vim下(還記得.vim這個(gè)路徑吧)。然后,用vim打開程序源碼,敲下命令:Tlist 打開列表,再輸入一次關(guān)閉列表。
  
4、使用文件瀏覽器和窗口管理器WinManager
  
    在使用vim的過程中,你也許會(huì)碰到這樣的情況:你本來想打開一個(gè)文件,但是錯(cuò)誤的用vim打開了一個(gè)路徑,這時(shí)候,居然沒有返回錯(cuò)誤信息,而是給出一個(gè)這個(gè)路徑下的文件列表。這一功能實(shí)際上是由vim的文件瀏覽器插件netrw實(shí)現(xiàn)的。我們?nèi)绾伟堰@一功能應(yīng)用到平時(shí)閱讀海量源代碼的過程中呢?如何將TagList窗口和netrw窗口整合起來呢?這時(shí)候,WinManager插件就派上用場了。
  
下載鏈接:http://www./scripts/script.php?script_id=95
  
在 ~/.vim  目錄下解壓 winmanager.zip,然后在~/.vimrc中增加下面兩句:
  
let g:winManagerWindowLayout='FileExplorer|TagList'
  
nmap wm :WMToggle<cr>
  
在vim的normal狀態(tài)下輸入"wm",即可發(fā)現(xiàn)很奇妙的分割串口畫面。
  
5、配置cscope
  
    先安裝吧,$ sudo apt-get install cscope。
  
然后在~/.vimrc中增加一句:
  
:set cscopequickfix=s-,c-,d-,i-,t-,e-
  
這步操作的目的是設(shè)定是否使用 quickfix 窗口來顯示 cscope 的查詢結(jié)果。
  
跟Ctags類似,要使用其功能必須先為你的代碼生成一個(gè)cscope的數(shù)據(jù)庫,在項(xiàng)目的根目錄運(yùn)行下面的命令:
  
$ cscope -Rbq
  
會(huì)生成三個(gè)文件:
  
-rw-rw-r-- 1 wooin wooin 1.1M 2007-09-30 10:56 cscope.in.out
  
-rw-rw-r-- 1 wooin wooin 6.7M 2007-09-30 10:56 cscope.out
  
-rw-rw-r-- 1 wooin wooin 5.1M 2007-09-30 10:56 cscope.po.out
  
這時(shí)候,你可以把下面這條命令寫進(jìn)~/.vimrc文件里面,以保證每次打開vim都會(huì)加載cscope數(shù)據(jù)庫文件:
  
cs add /home/zhangxiaoqi/eclair_101206/cscope.out /home/zhangxiaoqi/eclair_101206/
  
上面這條指令的意思是讓/home/zhangxiaoqi/eclair_101206/路徑下的所有文件都有權(quán)訪問/home/zhangxiaoqi/eclair_101206/cscope.out數(shù)據(jù)庫文件。這一步操作是和ctag類似的(你可以回去看看ctags的配置)。
  
這時(shí),你可以打開某一個(gè)源程序文件, 開始編輯。下面來做一個(gè)具體的操作, 查找函數(shù)good()的定義, 用命令:
  
:cs find g good

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    精品少妇人妻av一区二区蜜桃| 日本不卡一区视频欧美| 91福利免费一区二区三区| 成人区人妻精品一区二区三区| 欧美三级精品在线观看| 91人妻人人揉人人澡人| 日韩高清一区二区三区四区| 九九热这里只有精品视频| 91超精品碰国产在线观看| 精品综合欧美一区二区三区| 久久99这里只精品热在线| 国产日产欧美精品视频| 国产成人精品国产亚洲欧洲| 亚洲欧洲在线一区二区三区| 人妻少妇系列中文字幕| 日韩精品视频免费观看| 欧美日韩中国性生活视频| 高中女厕偷拍一区二区三区| 亚洲中文字幕人妻av| 久久精品国产在热亚洲| 中文字幕人妻综合一区二区| 日韩欧美三级中文字幕| 亚洲综合激情另类专区老铁性| 欧美精品久久男人的天堂| 真实国产乱子伦对白视频不卡| 欧美一区二区三区在线播放| 99少妇偷拍视频在线| 91日韩欧美在线视频| 亚洲一区在线观看蜜桃| 欧洲自拍偷拍一区二区| 亚洲精品偷拍一区二区三区 | 日本和亚洲的香蕉视频| 久久一区内射污污内射亚洲| 国产亚洲欧美日韩精品一区 | 91久久精品在这里色伊人| 98精品永久免费视频| 亚洲伦理中文字幕在线观看| 国产一级特黄在线观看| 色婷婷视频免费在线观看| 不卡一区二区在线视频| 亚洲av在线视频一区|