收集了一些SourceInsight在工作中很常用的技巧,记录如下:
1、自动缩进
选择Options/Document Options页面,点击其内的Auto Indent按钮,在弹出的Auto Indenting窗口中,默认配置为 Auto Indent Type 选择Smart,且勾选了Smart Indent Options中的两个可选项,这样得到的默认缩进效果为:
while (1)
{
I
}
每次都要手工去调整其缩进,其实只要把两个勾选项去掉,就可以得到:
while (1)
{
I
}
2、显示右边界
显示一条右边界,可以随时提醒我们是否该行代码写得过长了。
操作方法为:选择Options/Document Options页面,勾选其中的Show line numbers。同时勾选其中的Show right margin。
3、几个较常用的快捷键
- F5
指定行号,实现行跳转 - Shift+F8
高亮显示指定标识 - Ctrl+鼠标点击标识
直接跳转至标识定义处 - Ctrl+F
本文件内查找 - Shift+Tab
左移动代码,长度为一个tab字符
4、自定义快捷健
选择Options/Key Assignments,在弹出的Key Assignments窗口中可自由添加自己喜欢的快捷键。比较值得推荐的有如下几个快捷键定义:
- Edit: Drag Line Down
光标当前行下移。 - Edit: Drag Line Up
光标当前行下移。 - Edit: Join Lines
当前行和下一行连接成一行。
5、列选定
先按下Alt键,接着就可用鼠标进行列选择。
6、快速定位文件
在使用Source Insight的时候,我们希望能够快速定位已打开文件的物理位置,可以通过搜索功能来定位文件的物理位置,但这不是最快的。可以通过自定一个快捷键快速定位已打开文件的物理位置。
操作方法:
选择Options/custom command页面,点击Add按钮,填写新命令的名字, 如 see current file,然后点击OK按钮,在Run编辑框里输入命令:explorer /select,%f
,然后点击keys按钮,对这个命令新增一个快捷键即可。
7、中文乱码的解决方案
使用记事本将源码文件打开,然后另存为ANSI编码格式的文本。
8、无名技巧
这里介绍一些小技巧,大多数情况下我们可以无视它们的存在。但如果我们知道这些,某些时候,会有效提高工作效率。
Smart Rename
在上下文件菜单中选Smart Rename或按Ctrl+'
组合键,即可弹出Smart Rename窗口。它有很强大的功能,但最便捷的使用方式是更改函数内局部变量的名字,操作只作用于函数内部,速度非常快。
Renumber
使用Ctrl+R
将弹出Renumber窗口,这个用于处理数字顺序排列的情况相当有效,比如数组下标。例如现有代码
array[0] = 1;
array[1] = 2;
array[2] = 3;
现在要改为
array[0] = 0;
array[1] = 1;
array[2] = 2;
array[3] = 3;
当然可以一个个修改,但最快的方式是在array[0] = 1;之前添加array[0] = 0;,然后列选数组下标,使用Renumber功能以 0为起始值重填数值。
Edit Condition
很多代码尤其是驱动代码,当中有大量的预编译定义,以实现对不同硬件配置的支持。在阅读这样的代码时最痛苦的是不能简单判断程序实际执行的代码分枝。大量分枝同时存在,常常会混淆我们的视听。比如对于下面的代码:
#ifdef DEV1
/* DEV1代码代码 */
#else
/* 其它设备执行代码 */
#endif
如果确定我们当前分析的是DEV1的执行情况 5,那么可以选择上下文件菜单的Edit Condition 选项,在弹出的Conditional Parsing窗口中把DEV1的值设置为True,那么 #ifdef DEV1
就等价于#if 1
了,相当注释掉了#else
分枝的代码。反之,设置为Flase时,则注释掉#ifdef DEV1
分枝的代码。
9、宏语言
宏文件实现了一些在编码过程中可能会用到的功能, 如添加文件头、函数说明(使用时能自动添加文件名、函数名和当前日期)和宏定义,代码补全等。
使用说明:
Project/Open Project…
打开Base工程(该工程一般在”我的文档/Source Insight/Projects/Base”中);
Project/Add and Remove Project Files…
加入宏文件(即utils.em);
Options/Menu Assignments
打开Menu Assignments窗口,在Command中输入Macro,选中要使用的宏,添加到合适的菜单中.
推荐使用的宏:InsFileHeader、InsFunHeader、InsHeaderDef、InsIfdef和AutoExpand (为代码自动补全功能,建议建快捷键)。
关于AutoExpand的举例说明, 当你输入了 switch 且光标正处于switch后面,运行该宏则会得到
switch (###)
{
case
break;
default:
}
对于InsFunHeader宏,如果有如下函数体
int nOpenConfigFile(char *pchMemConfig, char *pchFlashConfig,
int nSize, int nMode)
{
I
}
光标在函数体内时运行该宏,那么将会在函数体上方得到
/******************************************************************************
* nOpenConfigFile -
* DESCRIPTION:-
*
* Input: N/A
* Output: N/A
* Returns: N/A
*
* modification history
* --------------------
* 1.00, Apr 19, 2007, T357 written.
* --------------------
******************************************************************************/
其中的函数名及编写日期自动按实际情况填充,T357串可通过修改utils.em文件,改成你需要的名字。