转自: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. shell的date命令:使用方法,以及小时、分钟的计算

    shell命令格式严格,不像python那样命令行中可以添加空格.如等号两边无空格.有多余空格错误,日期date命令就是最明显的例子. 命令格式: date [-u] [-d datestr] [-s ...

  2. AngularJS进阶(二十七)实现二维码信息的集成思路

    AngularJS实现二维码信息的集成思路        赠人玫瑰,手留余香.若您感觉此篇博文对您有用,请花费2秒时间点个赞,您的鼓励是我不断前进的动力,与君共勉!      注:点击此处进行知识充电 ...

  3. hadoop学习大纲

  4. struts2 easyui实现datagrid的crud

    最近两天因为项目需要,接触了easyui,要用它的datagrid实现crud.第一次做,花了一天时间才完成所有功能,昨天做另外一个模块,同样的功能只用了两个小时. 现在把第一次做datagrid时遇 ...

  5. Customer Form Issue: Automatic Matching Rule Set Defaults Value AutoRuleSet-1

    In this Document   Symptoms   Changes   Cause   Solution   References APPLIES TO: Oracle Receivables ...

  6. C语言生成32位和64位随机数算法

    C语言生成32位和64位随机数算法 /** * randstd.h * * Standard definitions and types, Bob Jenkins * * 2015-01-19: re ...

  7. html5 jqueryrotate插件实现旋转动画

    CSS3 提供了多种变形效果,比如矩阵变形.位移.缩放.旋转和倾斜等等,让页面更加生动活泼有趣,不再一动不动.然后 IE10 以下版本的浏览器不支持 CSS3 变形,虽然 IE 有私有属性滤镜(fil ...

  8. Android Studio Gradle 多渠道自动打包,动态修改HostUrl,签名apk,混淆配置详解

    文/ skay csdn博客:http://blog.csdn.net/sk719887916/article/details/40541163 最近遇到项目从Eclispe迁移到Android st ...

  9. 【Java编程】Java在dos窗口编译与执行的批处理

    最近在Java编程过程中,常用到dos窗口对程序进行编译与运行.但是不方便之处在于每次都要输入命令进入将要编译的程序的目录(其实也有简单的方法,在文章末尾给出).于是编写了一个配置文件,可以一次修改, ...

  10. prototype.js 和json.js 冲突

    1.冲突简述和分析 prototype.js与json.js并不是完全兼容的.主要冲突在于json.js为Object的原型增加了一个toJSONString的方法. 冲突之一:是prototype中 ...