標籤:
在程式開發過程中,程式員經常用到的一個功能就是尋找引用(Find Reference),Visual Studio裡面的對應功能是“尋找所有引用”(Find All References)。
本人在使用notepad++寫代碼的時候一直因為找不到類似的功能和苦惱。只好每次使用“在檔案中尋找”(Find in files)來找到所有引用。
但是這樣每次尋找都需要遍曆目標目錄的整個檔案系統,檔案多的話會耗費很長時間。
notepad++有外掛程式可以實現同樣的功能,但是相比於搜尋整個檔案系統,這種外掛程式只需要執行一次產生關鍵詞索引,後面就只需要在關鍵詞索引裡面尋找就行了。速度很快,出結果是瞬間的。
我目前發現兩種這類外掛程式,一個在plugin manager裡面叫“Gtags Search",安裝好後叫做"gtagfornplus"。但是經過試用,我發現在當前最新版本(6.7.9.2)的notepad++中無法使用。使用方法參見:http://sourceforge.net/p/gtagfornplus/code/HEAD/tree/
另一個外掛程式是NppGTags。
這個外掛程式的官方聲明裡是這樣說的:GTags built-in code parser supports C, C++, Yacc, Java, PHP4 and Assembly. Other languages are supported through Pygments + CTags parser.就是說預設的(內建的)文法解析器只支援C C++ Yacc Java PHP4和組合語言,而可選的Pygments和CTags parser這兩個解析器是可以支援其他語言的。我用notepad++是開發lua指令碼的,所以看來只能選擇後兩種解析器了。可是CTags parser實際上只能用到Find Definitions而Find Reference(尋找引用)這個功能沒有用。Pygments這個一直不能成功使用,提示"gtags: cannot open shared object ‘pygments-parser.dll‘.
發現lua不能被支援挺沮喪的。不過後來試了一下將.lua尾碼名改成.c後竟然能用!於是想了一下將整個工程檔案下的.lua重新命名為.c或.hpp來支援lua的尋找引用。我也實際寫了個指令碼這麼做了,可以這樣尋找所有的引用,但是啟動並執行時候還是需要.lua。如果複製一份並修改複製的.lua為.c或.hpp,則無法在完美支援尋找引用的同時進行修改,因為修改了以後需要將相應的修改應用到修改了尾碼名的檔案上,並且尋找引用裡面的點擊跳轉無法跳轉到.lua檔案,只能跳轉到改了尾碼名的檔案裡面,這樣無法及時對相應lua檔案進行修改。
在尋找pygments不能使用(因為網上有人說跳出提示說pygments-parser.dll打不開的原因是指定的路徑不對)的過程中發現在NppGTags目錄下面有一個檔案gtags.conf
這裡面指定了在使用非預設的解析器時對不同的語言用不同的解析器檔案(dll)。往上翻發現在使用build-in的解析器的時候指定了不同的語言對應的檔案尾碼名!於是我猜想這裡添加.lua就能支援lua檔案的關鍵詞索引資料庫建立。如下所示:
接下來(確保在setting裡面切回預設解析器,而不是pygments或ctags),然後點擊外掛程式->NppGtags->Create Database建立索引資料庫,然後選中關鍵詞後就可以尋找引用(點擊外掛程式->NppGtags->Find Reference)了,結果如所示(尋找結果在最下面的視窗,這裡是尋找對”rect“的引用):
配合快速鍵使用就很方便了。從尋找結果點擊可以進入源檔案。怎麼樣,還是很酷的吧 :D
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
notepad++ 尋找引用(Find Reference)(適用於c c++及各類指令碼比如lua)