2009年8月17日

[電腦]新學到ctags秘技及vi新招數 轉自Simon's misc. notes

轉自Simon's misc. notes的文章

http://zylix666.blogspot.com/2005/05/ctagsvi.html



1, ctags
- generate tag files for source code

以kernel source code 為例
我們到source tree的最上層, 使用以下命令

[zylix@zylix linux]ctags -R

經過一段時間後, 會看到新產生一個名為tags的檔案.
這就是tag file, 裡面會記錄整個kernel source code的tag.可以把這個檔cat 出來看就知道裡面的記錄.

2, 在vim裡面使用tag
用vim打開kernel裡的任一檔案. 舉例來說
vim arch/arm/mach-pxa/mainstone.c

開始使用剛才我們產生的tag 檔.
:set tags=tags

(1), 找一個function的實作
ctrl+]
(2), 找一個變數的宣告
ctrl+]
(3), 當我們想要跳回原來的地方
ctrl+t
(4), 想要show出變數的型別
ctrl+]+i

3, 新學到的vi招數之1 -- 同一個vi consol下編輯多個檔案
(1)在命令列中, 想要多重編輯, 也就是用同一個console編輯多個檔案
:e ctrl+D
可以列出所在位置的所有檔案列表.
找到想要開啟的檔案檔案
:e [路徑+檔名]
(2), 多重編輯檔案的切換
:b <要切換的檔案編號>
(3),當我們開了很多個檔案, 無法記住哪一個檔案是哪一個編號時,可以用ls列出所有開啟的檔案及其編號, 再用b <編號>加以開啟.

舉例來說
我現在開啟一個檔案arch/arm/mach-pxa/mainstone.c
vim arch/arm/mach-pxa/mainstone.c
我想要在同一個vi console下再開arch/arm/mach-pxa/generic.c
:e arch/arm/mach-pxa/generic.c
後來又開了drivers/net/smc91x.c
:e drivers/net/smc91x.c
後來我又想要用arch/arm/mach-pxa/mainstone.c這個檔案了, 就用
:b 1
就可以把這個檔案拉回來編輯.
當我們巳經開了好多個檔案了. 巳經不記得哪一個是哪一個了. 就用
:ls
這時vi 會列出
1 "arch/arm/mach-pxa/mainstone.c" 行 20
2 %a "arch/arm/mach-pxa/generic.c" 行 50
3 # "drivers/net/smc91x.c" 行 1

我們再用
: b 1
就可以編輯第一號的檔案, 也就是arch/arm/mach-pxa/mainstone.c了

4,新學到的vi招數之2--找出code裡面的對應
我們在寫code時常常會需要找括號對應, 雖然我們巳經養成好習慣在寫code時先把括號對應做好,
但很難保證我們一定不會需要去trace對應.
我們只要到括號上按下,shift+%, 就可以跳至對應的括號.
這個功能不只可以trace括號,連條件式編譯的#ifdef/#else/#endif都可以trace. 非常好用.

沒有留言:

張貼留言

NO-CARRIER 網卡無法啟動

 工作時,由於想要啟動linux OS的網卡, 發現某張新設定的網卡一直無法啟動,就算下指令UP了,但是也沒有順利啟動 所以爬文後,想要確認該網卡的status, 發現某行為: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu...