在程序开发过程中,程序员经常用到的一个功能就是查找引用(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等)相关推荐

  1. 指针(pointer)与引用(reference)

    const const是常量的意思,被其修饰的变量不可修改 如果修饰的是类.结构体(的指针),放在数据类型(int)前后没有区别,其成员也不可以更改 const修饰的是其右边的内容 虽然p1不能修改指 ...

  2. dataframe 查找特定值_省时省力的查找引用函数

    如果觉得文章对你有帮助,欢迎点赞.转发.收藏欢迎关注头条号:数据分析鱼,你们的支持是我坚持码字的不懈动力! 上篇文章分享了日期和时间函数,这篇介绍查找引用函数.在数据量非常少的时候 ,可能并不需要使用 ...

  3. Java内存管理之软引用(Soft Reference)

    软引用(Soft  Reference)的主要特点是具有较强的引用功能.只有当内存不够的时候才回收这类内存,因此在内存足够的时候,他们通常不被回收.另外,这些引用对象还能保证在Java  抛出OutO ...

  4. (Excel)常用函数公式及操作技巧之九:查询和查找引用

    (Excel)常用函数公式及操作技巧之九: 查询和查找引用 --通过知识共享树立个人品牌. 查找顺序公式 =LOOKUP(2,1/(A1:A20<>0),A1:A20) =MATCH(7, ...

  5. Google C++ Coding Style:右值引用(Rvalue Reference)

    右值引用是一个C++11特性,标记为T&&.GSG中定义:只为移动建构函数(Move constructor)和移动赋值操作(Move assignment)使用右值引用.并且不要使用 ...

  6. 计算机横向查找,Excel查找引用函数:HLOOKUP查找首行并显示指定的值-excel技巧-电脑技巧收藏家...

    Excel查找引用函数:HLOOKUP查找首行并显示指定的值 说明 在表格或数值数组的首行查找指定的数值,并在表格或数组中指定行的同一列中返回一个数值.当比较值位于数据表的首行,并且要查找下面给定行中 ...

  7. Excel中,用VLOOKUP如何跨表查找引用数据,例如通过工号查姓名,通过key查value

    Excel中,用VLOOKUP如何跨表查找引用数据,例如通过工号查姓名,通过key查value. 在同一个Sheet中,如何查找. 查找函数为:=INDEX(B:B,MATCH(F2,A:A,)) 例 ...

  8. UnityEditor查找引用和批量替换资源工具

    因为UI资源迭代需要根据资源引用进行查找批量替换新资源 直接上代码: using System.Diagnostics; using System; using System.IO; using Sy ...

  9. 查找引用类EXCEL函数之VLOOKUP函数的使用方法

    在一个数据量比较大的工作表中,如果想要找到符合某些特征的记录,通常会采用筛选的方式去实现.但如果需要查找某一条记录,那么用查找引用类EXCEL函数会更为方便.接下来,简单介绍一下查找引用类EXCEL函 ...

最新文章

  1. 计算机的主要硬件部件,主要内容: 计算机的基本概念 系统硬件组成(主要部件、系...的.ppt 文档全文预览...
  2. Effective java 系列之更优雅的关闭资源-try-with-resources
  3. archlinux php imagemagick,Arch Linux服务器启用Imagemagick PHP扩展
  4. python精要(69)-turtle(1)
  5. Javascript的数组对象
  6. [置顶]       jBPM4工作流开发实战 之 第二部分 jBPM4开发入门
  7. matlab 相位谱_电气信息类专业课程之matlab系统仿真 第九章 提高仿真能力需要案例(1)...
  8. excel文本写入 npoi_C#使用NPOI读写excel
  9. windows 安装 win32 win32com模块
  10. MAC地址及对应的厂商
  11. 整理了81个Python实战项目列表,都有完整且详细的教程
  12. 阿里巴巴——三面,面试经历记录
  13. 使用JavaScript进行iframe的DOM操作
  14. 大二学生基于Html+Css+javascript的网页制作——动漫设计公司响应式网站模板 (10个页面)
  15. 快捷方式图标变成白色
  16. 非宁静无以致远,借以静化心灵
  17. 数字电视业务PSI/SI学习
  18. Jqurey总结归纳
  19. java:对字母进行大写(小写)的转化
  20. springmvc接收用户提交的数据

热门文章

  1. 06 全局锁和表锁 :给表加个字段怎么有这么多阻碍? *(笔记)转
  2. RWMutex的一道面试题
  3. Sentinel熔断限流器工作原理
  4. iscsi存储常见错误
  5. QEMU/KVM原理概述
  6. 在Qt 中如何使用OpenCV库
  7. 关于dubbo的几个问题
  8. mysql中的派生表
  9. mysql连接参数配置
  10. 一张图展示一段js代码的一生,变量对象、作用域链、闭包、this