notepad++ 尋找引用(Find Reference)(適用於c c++及各類指令碼比如lua、python等)

來源:互聯網
上載者:User

標籤:setting   set   other   更新   速度   size   php   單詞   http   

在程式開發過程中,程式員經常用到的一個功能就是尋找引用(Find Reference),Visual Studio裡面的對應功能是“尋找所有引用”(Find All References)。

    我在使用notepad++寫代碼的時候一開始一直因為找不到類似的功能而苦惱。只好每次使用“在檔案中尋找”(Find in files)來找到所有引用。

    但是這樣每次尋找都需要遍曆目標目錄的整個檔案系統,檔案多的話會耗費很長時間。

    notepad++有外掛程式可以實現尋找引用的功能。相比於搜尋整個檔案系統,這種外掛程式只需要執行一次產生關鍵詞索引,後面就只需要在關鍵詞索引裡面尋找就行了。速度很快,出結果是瞬間的。而且後面即使你修改了檔案也不需要重建關鍵詞索引資料庫,因為在儲存該檔案的同時就會自動更新關鍵詞索引資料庫。

    這個外掛程式就是NppGTags。NppGTags的預設解析器是只針對C, C++, Yacc, Java, PHP4和彙編的源檔案的,但是稍微改一下配置就可以支援lua、Python或者其他類型的語言了。

    在NppGTags目錄下面(取決於你的notepad++安裝目錄,我的是C:\Program Files (x86)\Notepad++\plugins\NppGTags)有一個檔案gtags.conf有一個檔案gtags.conf

    這裡面指定了在使用非預設的解析器時對不同的語言用不同的解析器檔案(dll)。往上翻發現在使用build-in的解析器的時候指定了不同的語言對應的檔案尾碼名!於是我猜想這裡添加.lua就能支援lua檔案的關鍵詞索引資料庫建立。如下所示:

   接下來(確保在setting裡面切回預設解析器,而不是pygments或ctags。如果沒有改過setting那麼就肯定是預設解析器,不需要做切換。),然後點擊外掛程式->NppGtags->Create Database建立索引資料庫,然後選中關鍵詞後就可以尋找引用(點擊外掛程式->NppGtags->Find Reference)了,結果如所示(尋找結果在最下面的視窗,這裡是尋找對”rect“的引用):

 

    配合快速鍵使用就很方便了。我一般對Find Reference設定快速鍵ctrl+shift+G,選中關鍵詞後按快速鍵就能得到尋找引用的結果了。從尋找結果中雙擊可以進入源檔案對應位置進行查看修改。

    將游標定位在單詞上(不需要選中)也能進行該單詞的尋找引用,如果想要對某個關鍵字尋找引用,但不知道該關鍵字出現在哪個檔案裡,只需要將游標定位在任意非單詞處(比如空行處,或者一個括弧結束的地方等等),再進行尋找引用(快速鍵或者菜單進入),就會出現尋找引用的視窗,這裡還會有關鍵字代碼提示功能。

 

    同理,其他語言只需要將對應源檔案的尾碼名按同樣的方法加入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後竟然能用!於是想了一下將整個工程檔案下的.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/

notepad++ 尋找引用(Find Reference)(適用於c c++及各類指令碼比如lua、python等)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.