應 l 君要求放上 DD 圖 |
vim + ctags + cscope 應該是查到爛的組合, 基本上是 linux 環境下 Source Insight 的替代品, 我使用 vim 多年, 從沒有把這組合技練成過, 只用過 ctags, 記住僅僅的 ctrl+], ctrl+t 兩個組合鍵, 在瀏覽程式碼就省下不少功夫, 可惜要 reference 那個 function 使用了那個變數/函式, 還是得靠 grep, 過了這麼多年, 終於可以靠 global 取代 ctags + cscope, 也不用改變 ctrl+], ctrl+t 這兩個組合鍵的使用習慣。
descent@u64:simple_compiler$ find . -name "*.h" -o -name "*.cpp" > gtags.files cat gtags.files ./token.h ./parser.h ./mytype.h ./astnode.h ./lexer.h ./op.h ./env.h ./env.cpp ./c_parser.cpp ./lexer.cpp ./op.cpp ./token.cpp ./astnode.cpp $ gtags
建立 gtags.files 再按下 gtags (不用建立 gtags.files 也可以) 就會產生 tag 檔案了。
複製 gtags.vim (global 套件提供) 到 ~/.vim/plugin/, 在最後面加入 list 1 的 hot key 定義。最主要就是
:Gtags -s abc - 找誰用了 abc 這個函式 :Gtags -r xyz - 找誰用了 xyz 這個變數
在 ~/.vim/vimrc 加入 list 2 內容, 最主要是相容於 ctags 的 hot key, 原有的習慣就不用改變。
在某個 function 按下 ctrl+], ctrl+t 一樣是原來 ctags 的功能, 然後在某個 function 按下, crtl+\, 神奇的事情就發生了, 會跳到用這個函式的地方 (如同 fig 1),然後 ctrl+n, ctrl+p 是上一個, 下一個。
如果是 symbaol (變數) 就用 ctrl+m, 沒問題吧 \ 是函式, m 是對付變數。如果不喜歡 \, m, 參考 list 1 改成自己喜歡的按鍵。
fig 1. eval 出現的地方 |
只要有這 4 個按鍵, 看 code 就輕鬆多了, 只要 4 個, 你不會記不住吧! 好吧! 你可能還需要 ctrl+w+up/down 來切換視窗, 會需要在多記住幾個按鍵。
感謝 irc l 君友情支援 vim script。
不過我沒搞定怎麼跳到 symbol definition, 所以現在還是搭配著 ctags 一起用, 實在是太蠢了。
這裡有個方便的 vim plugin, 不過我不會用, 才自己搞。
https://github.com/tranngocthachs/gtags-cscope-vim-plugin
ref:
- 介绍一下gnu global,比cscope更方便更快速的索引工具
- GNU GLOBAL Source Code Tag System, global 手冊, 中文資訊沒找到滿意的, 只好自己 k 英文手冊。
沒有留言:
張貼留言
使用 google 的 reCAPTCHA 驗證碼, 總算可以輕鬆留言了。
我實在受不了 spam 了, 又不想讓大家的眼睛花掉, 只好放棄匿名留言。這是沒辦法中的辦法了。留言的朋友需要有 google 帳號。