在程序開發過程中,程序猿經經常使用到的一個功能就是查找引用(Find Reference)。Visual Studio里面的相應功能是“查找全部引用”(Find All References)。
我在使用notepad++寫代碼的時候一開始一直由於找不到類似的功能而苦惱。僅僅好每次使用“在文件里查找”(Find in files)來找到全部引用。
可是這樣每次查找都須要遍歷目標文件夾的整個文件系統,文件多的話會耗費非常長時間。
notepad++有插件能夠實現查找引用的功能。相比於搜索整個文件系統,這樣的插件僅僅須要運行一次生成關鍵詞索引,后面就僅僅須要在關鍵詞索引里面查找即可了。速度非常快,出結果是瞬間的。並且后面即使你改動了文件也不須要又一次生成關鍵詞索引數據庫,由於在保存該文件的同一時候就會自己主動更新關鍵詞索引數據庫。
這個插件就是NppGTags。
NppGTags的默認解析器是僅僅針對C, C++, Yacc, Java, PHP4和匯編的源文件的。可是略微改一下配置就能夠支持lua、python或者其它類型的語言了。
這里面指定了在使用非默認的解析器時對不同的語言用不同的解析器文件(dll)。
往上翻發如今使用build-in的解析器的時候指定了不同的語言相應的文件后綴名!於是我猜想這里加入.lua就能支持lua文件的關鍵詞索引數據庫創建。
例如以下所看到的:
接下來(確保在setting里面切回默認解析器,而不是pygments或ctags。
假設沒有改過setting那么就肯定是默認解析器,不須要做切換。),然后點擊插件->NppGtags->Create Database創建索引數據庫。然后選中關鍵詞后就能夠查找引用(點擊插件->NppGtags->Find Reference)了,結果例如以下圖所看到的(查找結果在最以下的窗體。這里是查找對”rect“的引用):
配合快捷鍵使用就非常方便了。
我一般對Find Reference設置快捷鍵ctrl+shift+G,選中關鍵詞后按快捷鍵就能得到查找引用的結果了。從查找結果中雙擊能夠進入源文件相應位置進行查看改動。
將光標定位在單詞上(不須要選中)也能進行該單詞的查找引用。假設想要對某個keyword查找引用。但不知道該keyword出如今哪個文件中,僅僅須要將光標定位在隨意非單詞處(比方空行處。或者一個括號結束的地方等等)。再進行查找引用(快捷鍵或者菜單進入)。就會出現查找引用的窗體,這里還會有keyword代碼提示功能。
同理,其它語言僅僅須要將相應源文件的后綴名按相同的方法增加gtags.conf就能夠使用查找引用了(比方僅僅須要在gtags.conf相應位置增加.py就能支持python文件的查找引用了)。怎么樣,還是非常酷的吧 :D
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
以下是找到怎樣處理非c c++文件(我這里是嘗試lua文件)之前的一些嘗試。僅作記錄:
這個插件的官方聲明里是這樣說的: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后居然能用!
於是想了一下將整個project文件下的.lua重命名為.c或.hpp來支持lua的查找引用。我也實際寫了個腳本這么做了,能夠這樣查找全部的引用。可是執行的時候還是須要.lua。
假設復制一份並改動復制的.lua為.c或.hpp。則無法在完美支持查找引用的同一時候進行改動。由於改動了以后須要將對應的改動應用到改動了后綴名的文件上,而且查找引用里面的點擊跳轉無法跳轉到.lua文件,僅僅能跳轉到改了后綴名的文件中面。這樣無法及時對對應lua文件進行改動。
最后在查找pygments不能使用(由於網上有人說跳出提示說pygments-parser.dll打不開的原因是指定的路徑不正確)的過程中發現改動gtags.conf文件能夠達到我們想要的目的。:)
另外一個同類型的插件在plugin manager里面叫“Gtags Search",安裝好后叫做"gtagfornplus"。可是經過試用,我發如今當前最新版本號(6.7.9.2)的notepad++中無法使用。用法參見:http://sourceforge.net/p/gtagfornplus/code/HEAD/tree/