转自:http://www.cnblogs.com/heiyue/p/6225975.html

一直使用sourceinsight编辑C/C++代码,sourceinsight是一个非常好用的编辑工具可以任意定位,跳转,回退,本人一直 使用该工具做C/C++开发,sourceinsight能够满足我的大部分需求,但是有些功能没有总觉得是一个缺憾。本文将补充这些非常好用的功能。



<1>.使用快捷键注释,单行注释,多行注释,#if 0注释

<2>.跳转到当前文件所在的文件夹,并高亮选择

<3>.使用quicker.em插件添加函数注释,文件头注释,标记注释等

<4>.多选项卡插件

下面分别对如何在sourceinsight中使用上述4个功能进行说明:

<1>.使用快捷键注释,单行注释,多行注释,#if 0注释

将文件 mycomment.em点此下载放 到sourceinsight的Base工程的路径下(一般是在C:\Documents
and Settings\Administrator\My Documents\Source Insight\Projects\Base,或 C:\Users\kun\Documents\Source Insight\Projects
),当然推荐存放到该目录下,一般em文件是sourceinsight的宏语言文件,宏语言是 sourceinsight定义的一种语言,语法与C语言类似,sourceinsight提供了很多函数可供调用,以实现一些自定义的功能。em文件可 以放到任意位置,不一定要放在souceinsight的工程目录下。

在souceinsight中选择菜单 Project ->Open Project 弹出对话框如下,选择打开Base工程:

再打开的Base工程的界面中,选择Project Window窗口下面的添加工程文件按钮,将mycomment.em文件添加到该Base工程中:

选择菜单Options-> Key Assignments... 为宏添加一个快捷键:

mycomment.em文件中定义了3个宏,首先找到宏 Macro: WangQiGuo_MultiLineComment 该宏的功能是当执行之后会将所选择的代码块的每一行前面添加//双斜杠注释,选择这个宏之后,点击按钮Assign
New Key ... 为该宏分配一个快捷键,此时会弹出一个对话框,这个时候只需要按键盘上面想要的快捷键就行了,例如我这里使用的是ctrl + / 这个快捷键,该快捷键会被检测到并自动添加到Keystroks窗口中,表示添加成功了,此时点击OK就设置完成了。

此时随便找一个简单的文件拖到souceinsight窗口中就可以测试了:

选中某一行,直接按ctrl + / 就会自动注释,当然多行也是可以的。

用同样的方法为mycomment.em文件中的另外两个宏 Macro: WangQiGuo_AddMacroComment 与 Macro: WangQiGuo_CommentSelStr 定义快捷键,其中宏Macro: WangQiGuo_AddMacroComment 是将选中的代码前后添加#if 0  与 #endif 注释的。而宏Macro: WangQiGuo_CommentSelStr 是在选中的代码前后添加 /* 和 */ 注释的

为了便于记忆,我为Macro: WangQiGuo_AddMacroComment设置的快捷键是 ctrl + 3 原因是在大键盘上数字键3上有一个#号,而我们的注释块#if 0 ,#endif中有#号,而Macro:
WangQiGuo_CommentSelStr的快捷键我设置的是 ctrl + 8 
原因是大键盘上的数字键8上有一个*号。

宏块注释的效果如下图:

多行注释的效果如下图:

<2>.跳转到当前文件所在的文件夹,并高亮选择

我们使用sourceinsight的时候是否会有这样的需求:有时候代码很多,我 需要找到sourceinsight中的某个源文件在资源管理器中的位置,但是可惜的是sourceinsight没有这样的功能,为此我google, 百度了很久都没有一个好的解决方法,而实际上该功能的实现是非常简单的:

将文件 openfolder.em点此下载 添加到sourceinsight的Base工程目录,按照上面的方法,将openfolder.em添加到Base工程中,该文件中有一个宏 Macro: ToExplorerFolder
其功能就是当宏执行的时候在资源管理器中打开sourceinsight中的当前文件所在的文件夹,并高亮选择该源文件,添加快捷键的图如下:

我选择的快捷键是ctrl + t

按ctrl + t之后,其执行的效果如下图:

自动打开一个资源管理器窗口,并定位到我的文件test.cpp,实际上打开openfolder.em可以看到其实现是很简单的,就是利用 sourceinsight提供的相关函数获得当前文件的绝对路径,然后将该路径传递给命令行的explorer命令,执行该命令就可以 了,explorer的命令可以自行到cmd中试一下,openfolder.em中有注释说明。

 <3>.使用quicker.em插件添加函数注释,文件头注释,标记注释等

quicker.em点此下载 该文件据说是华为的一个员工写的,主要功能是为函数接口添加注释,为文件添加注释,生成头文件,生成标记注释(添加类似这样的注释:/*added by xxx 2014-05-07*/) ,
按照同样的方法将该文件添加到Base工程中,该文件中定义了一个主要的宏Macro: AutoExpand 该宏支持很多扩展命令,下面是我为该宏配置的快捷键 ctrl + enter (推荐使用ctrl + enter):

该宏下面包含许多子命令,下面介绍常用的命令:

1.添加文件头注释:

命令:fi  解释:file



2.添加函数说明注释:

命令:fu  解释: function



3.添加单行注释:

命令:as  解释: add start       (添加之后:/* add by zhangsan, 20140504, Mantis号:d, 原因: */ )

命令:ms  解释: modify start    (添加之后:/* modify by zhangsan, 20140504, Mantis号:d, 原因: */ )

命令:ds  解释: delete start    (添加之后:/* delete by zhangsan, 20140504, Mantis号:d, 原因: */ )



4.添加标记注释:

命令:ab  解释: add begin       (添加之后:/* add begin by zhangsan, 20140504, Mantis号:d 原因: */)

命令:ae  解释: add end         (添加之后:/* add end by zhangsan, 20140504 */)



命令:mb  解释: modify begin    (添加之后:/* modify begin by zhangsan, 20140504, Mantis号:d 原因: */)

命令:me  解释: modify end      (添加之后:/* modify end by zhangsan, 20140504 */)



命令:db  解释: delete begin    (添加之后:/* delete begin by zhangsan, 20140504, Mantis号:d 原因: */)

命令:de  解释: delete end      (添加之后:/* delete end by zhangsan, 20140504 */)

5.配置命令:

命令:co  解释:config (修改相关配置信息)

如何使用呢,以为整个文件添加注释为例,在源文件的任何地方输入命令 fi 之后直接按ctrl + enter 如下图所示:

在弹出的对话框中输入对该文件的描述信息,例如我输入的是“测试文件” , 直接点击OK之后文件变成这样:

可以看到在该文件的头部自动生成了一块注释代码其中包含了 文件名,负责人,文件说明,版权说明,生成时间,修改日志等

我们可以使用co命令修改这里的负责人,并且可以指定生成的语言是中文还是英文,同样在源文件的任何地方输入co之后直接按ctrl + enter 会弹出输入框让我们修改作者,选择语言,该配置只需要设置一次,之后再使用其他命令只要生成的注释里面包含作者信息的都会使用我们配置的这个作者名。

这里的版权说明只能自己手工修改代码,打开quicker.em文件,找到macro InsertFileHeaderCN定义就会看到相关版权信息的说明,自己改一下就可以了:

同样如果生成的是英文信息,请修改InsertFileHeaderEN 这个宏里面的相关代码。

本段只演示了fi命令如何添加文件头的注释信息,其他的命令,例如fu命令添加函数头的注释信息,还有其他的命令添加相关形式的注释信息,请自行 测试,要说明的是quicker.em中的这些命令都是扩展命令,其使用方法都是一样的,在文件的任何地方输入命令之后直接按ctrl + enter 就会出效果。例如添加函数注释的效果如下:

直接在函数max前面输入fu命令之后 按ctrl + enter 会提示输入相关的注释信息

下面的3个注释是分别输入as 之后按ctrl +enter ,  输入ms 之后按ctrl + enter , 输入ds之后按ctrl + enter 之后生成的注释效果:

有关quicker.em的其他命令请自行测试,另外还有一些没有提到的命令,例如自动生成if块,for语句块,switch块等,请百度搜索相关资料

<4>.多选项卡插件

把源码包中的msimg32.dll和sihook.dll删除,拷贝已经成功的这两个文件就可以实现:

双击选项卡可以关闭某一个文件,在选项卡的左边点击下拉箭头,可以对该插件设置,或者关闭该插件:

<5>.全选

在SI中,CTRL + a 这个快捷键被定义的功能不是全选,好像是全部保存功能。
你需要自己修改快捷键的定义,在Options->Key Assignments 然后在Command里面输入Save,你就可以看到下面有File: Save All了,鼠标点击一下File: Save All,将Save All 的快捷键CTRL + a删除。
然后再到Command里面输入输入 Select All 为其设置快捷键CTRL + a
这样CTRL + a就可以完成全选的功能了

非常适用的Sourceinsight插件,提高效率【强力推荐】的更多相关文章

  1. paip.提高效率---集合的存取括号方式 uapi java python php js 的实现比较

    paip.提高效率---集合的存取括号方式 uapi java python php js 的实现比较 ##java ----------- 在JDK1.7中,摒弃了Java集合接口的实现类,如:Ar ...

  2. 七个 Android 程序猿提高效率必备工具

    Android 程序猿提高效率必备工具 0x00 Code tree for GitHub 这个 Chrome 浏览器插件.Github 作为最大同性交友网站,每天的工作几乎是从打开这个网站开始的.当 ...

  3. 利用mock提高效率

    利用mock提高效率 谈到mock,就不得不讲前后端分离.理想情况下前后端不分离,由全栈的人以product和infrastructure的维度进行开发,效率是最高的.近些年来业务的复杂度越来越高,真 ...

  4. 【转】.NET程序员提高效率的70多个开发工具

    原文:.NET程序员提高效率的70多个开发工具 工欲善其事,必先利其器,没有好的工具,怎么能高效的开发出高质量的代码呢?本文为各ASP.NET 开发者介绍一些高效实用的工具,涉及SQL 管理,VS插件 ...

  5. Oracle多表连接,提高效率,性能优化 (转)

    执行路径:ORACLE的这个功能大大地提高了SQL的执行性能并节省了内存的使用:我们发现,单表数据的统计比多表统计的速度完全是两个概念.单表统计可能只要0.02秒,但是2张表联合统计就可能要几十表了. ...

  6. 提高效率的Matlab使用方式

    1.花一点时间学习一些提高效率的技巧永远是值得的: 2.总结和记录永远是必要的. Command窗口: Editor窗口: 1.Tab自动补全

  7. paip.提高效率---微信 手机app快速开发平台—微网络撬动大市场

    paip.提高效率---微信 手机app快速开发平台-微网络撬动大市场   手机app快速开发平台 尤其适合crm系统,呼叫中心等业务功能...    作者Attilax  艾龙,  EMAIL:14 ...

  8. oracle里要查看一条sql的执行情况,有没有走到索引,怎么看?索引不能提高效率?

    index scan 索引扫描 full table scan是全表扫描 直接explain plan for 还有个set autotrace什么 索引一定能提高执行效率吗? 索引不能提高效率的情况 ...

  9. HttpWebRequest提高效率之连接数,代理,自动跳转,gzip请求等设置问题

    先设置4个: [csharp] webrequest.ServicePoint.Expect100Continue = false; //是否使用 Nagle 不使用 提高效率 webrequest. ...

  10. 计算机天才Aaron Swartz 名作 《如何提高效率》——纪念真正的“hacker"!

    如何提高效率 <HOWTO: Be more productive>(如何提高效率)作者:Aaron Swartz 肯定有人跟你说过这样的话,“你有看电视的那么长时间,都可以用来写一本书了 ...

随机推荐

  1. The ENU localization is not supported by this SQL Server media

    今儿在给服务器装sqlserver2008R2时遇到一个问题"The ENU localization is not supported by this SQL Server media&q ...

  2. 将 MVVM 演化为 MVVMM

    众所周知,MVVM模式解决了Controller的臃肿并方便单元测试,为了方便后续代码维护,在上版本新功能开发中,项目开始使用MVVM模式进行开发. 但从上图可以看出,MVVM模式中,Controll ...

  3. LeetCode之“数学”:Reverse Integer && Reverse Bits

    1. Reverse Integer 题目链接 题目要求: Reverse digits of an integer. Example1: x = 123, return 321 Example2:  ...

  4. 苹果新的编程语言 Swift 语言进阶(七)--枚举、结构、类

    Swift语言中,具有类特征的类型包括三种,即枚举类型.结构类型(包括基本类型,基本类型实际都是结构类型的特例).类.其中枚举类型.结构类型是属于值类型,类属于引用类型.三种类型都可以添加属性.方法. ...

  5. 苹果新的编程语言 Swift 语言进阶(二)--基本数据类型

    一  .   常量和变量 Swift语言 对常量和变量的声明进行了明确的区分 Swift语言的常量类型比C 语言的constants类型更加强大,语义更加明确. 常量和变量的区别是常量在设置或初始化后 ...

  6. Which SQL statement is the trump card to the senior software developer

    Which SQL statement is the trump card to the senior software developer                    MA Genfeng ...

  7. fastDFS与Java整合上传下载

    由于项目需要整合个文件管理,选择使用的是fastDFS. 整合使用还是很方便的. 准备 下载fastdfs-client-java源码 源码地址 密码:s3sw 修改pom.xml 第一个plugin ...

  8. WPF中使用后台代码来控制TreeView的选择项(SelectedItem)以及展开节点操作

    首先为TreeView控件制作一个Style: <Style x:Key="LibraryTreeViewItemStyle" TargetType="{x:Typ ...

  9. WebService学习--(一)webservice相关概念

    一.序言 大家或多或少都听过 WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成 分.但是不得不承认的是W ...

  10. 排序算法入门之堆排序(Java实现)

    堆排序 在学习了二叉堆(优先队列)以后,我们来看看堆排序.堆排序总的运行时间为O(NlonN). 堆的概念 堆是以数组作为存储结构. 可以看出,它们满足以下规律: 设当前元素在数组中以R[i]表示,那 ...