SourceInsight的实用技巧

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
  若干年前曾写个一篇关于source insight宏的使用文章,放到这里后就一直没有理会。过了很久之后,偶然的一次查找,才知道已经有不少地方引用那篇文章,想来文章还是有一定用处的。
前段时间刚好有空闲时间,于是又写一篇关于source insight的文章,这次侧重于实用技巧的介绍,希望对大家有帮助。

我常常这样想,Source Insight(下文的SI指的也是它)就是这样的一个东西:
  Windows下开发人员的至爱,功能强大,界面友好。支持语法高亮、符号跳转,还支持函数调用关系图显示。这是一个专业的编程环境,很多大公司都是使用它的。这个编辑器除支持完善的自定义功能外,几乎所有配置都能作个性化配置。除此之外,它本身带有一套功能强大的宏语言(Macro Language),借助这种语言可以很方便的编程实现各种特殊功能,非一般编辑器所能比拟。查找功能支持得也很不错。虽然在工程较大时,查找起来有点慢。但是它除了一般编辑器所支持的普通字符串查找、正则表达式查找外,还能支持关键字查找-这种方式比前两者快得多,也算是一个弥补。不足之处是列模式较弱,对中文支持有缺陷。
显然,它也像其它任何东西一样的,同时具有优点和缺点的本性的,究竟如何,且听我一一道来。

[原创文章,转载请保持文章完整,并注明出处。更多精彩文章请访问http://blog.csdn.net/Jupin 
或者 http://hi.baidu.com/qiupingwu]

1  开胃菜-初级应用

1.1  选择美丽的界面享受工作

虽然不能以貌取人,但似乎从来没有人责备以貌取软件的。SI的华丽界面,绝对符合现代花花世界的人的审美趣味。在SI中,我们可以轻松地把各种类型关键字、变量、标志符、函数、宏、注释等定义为不同的颜色和显示方式(正体或斜体、加粗或正常、加下划线、放大显示等),总有一种方式能让我们一眼就能分辨出这个标识是什么。
1.1.1  字体选择
在SI中样式是可以被继承,如果要从根本上改变字体,最简单的方式就是直接修改根样式中的字体,因为其它样式都会由此继承而来。选择Options/Document Options页面内的Font Options中的Screen Fonts字体,即可改变根样式中的字体。SI中的默认配置为Verdana字体,是一种非等宽字体 2 ,为了使编写的代码在各种编辑器中看起来都有良好的对齐效果,这里强烈建议使用等宽字体,Courier、New Courier和宋体等都是较好的选择。
1.1.2  颜色定义
毕竟这是见仁见智的东西,所以从来没有统一的标准3。很多人并不喜欢SI提供的默认配置,那么我们就改吧。选择Options/Style Properties页面,就可以在其中修改所有样式了。选择等号(=)表示继承Parent Style,也可以选择Pick(或者ON/OFF等)去配置一个新值。这完全视乎个人喜好。
1.1.3  标识符样式选择
在与 颜色定义 一节同样的界面内即可完成此项配置。
1.1.4  背景色选择
在希望要改变背景色的窗口点击鼠标右键(假定使用的是右手鼠标 4),选择上下文菜单的 xxx Window Properties项,然后点击弹出窗口的Back Color按钮,即可修改该窗口背景色。对于SI的源码主窗口,只需选择上下文菜单的Special Window Color项即可完成背景色修改。

1.2  配置合理的默认值高效工作

1.2.1  使用合理的缩进
我始终认为最容易获得认同的是关于这个选项的配置了。选择Options/Document Options页面,点击其内的Auto Indent按钮,在弹出的Auto Indenting窗口中,默认配置为 Auto Indent Type选择Smart,且勾选了Smart Indent Options中的两个可选项,这样得到的默认缩进效果为
    while (1)
        {
        I
        }

每次都要手工去调整其缩进,其实只要把两个勾选项去掉,就可以得到
    while (1)
    {
        I
    }

何乐而不为呢?
1.2.2  显示坐标
通常情况下在窗口状态栏左下方,最会显示当前光标所在行列信息,但我总觉得不够明显,于是通常我们作如下配置:
选择Options/Document Options页面,勾选其中的Show line numbers。同时勾选其中的Show right margin,我们就可显示一条右边界,随时提醒我们是否该行代码写得过长了。

1.3  创建便捷的快捷键快乐工作

1.3.1  几个较常用的快捷键
默认情况下,SI已经定义了很多非常实用的快捷键:
  • F5
    指定行号,实现行跳转,在遇到编译错误的时候,能特别方便的找到出错行。
  • Shift+F8
    高亮显示指定标识,快速浏览标识的使用情况。
  • Ctrl+鼠标点击标识
    直接跳转至标识定义处。
  • Ctrl+F
    本文件内查找。
  • F3
    本文件查找结果的上一个。
  • F4
    本文件查找结果的下一个。
  • F7
    打开Browse Project Symbols窗口,快速浏览工程内标识定义。
  • Ctrl+M
    创建或查找书签,方便下次找回此位置。
1.3.2  自定义快捷健
选择Options/Key Assignments,在弹出的Key Assignments窗口中可自由添加自己喜欢的快捷键。比较值得推荐的有如下几个快捷键定义:
  • Edit: Drag Line Down
    光标当前行下移。
  • Edit: Drag Line Up
    光标当前行下移。
  • Edit: Join Lines
    当前行和下一行连接成一行。
1.3.3  更多的快捷键
如果你正好对SI的Marco语言(下文将会介绍)有研究,那么还可以定义更多有用的快捷键,比如添加文件头、函数头、注释等(下文在介绍Marco语言时会介绍如何实现)。

2  小技巧-中级应用

2.1  查找与替换

在SI中支持多种查找及替换方式,除了上文提到的文件内查找外,还支持工程范围内查找、目录查找、指定多文件查找等等。
2.1.1  查找
  1. Loopup References
    我们最常用的一种查找方式是选择Search/Lookup References或按Ctrl+/组合键再或者鼠标点  R 按钮,在弹出的Loopup References窗口进行查找操作。
    在Search Method中有四种可选的查找方式:Simple String、Regular Expression、 Keyword Expression和Look Up Reference。其中Simple String是最普通的查找方式,可以查找文件中出现的任意字符或字符,甚至可以查找 _upap || u 这样的字符串,但是在工程较大时,查找过程会较慢。
    Regular Expression查找方式将在后面讲述正则表达时会介绍到,这里暂时按下不表。
    Keyword Expression和Look Up Reference查找的结果基本相同,但是显示方式略有差异。这两种方式都是使用SI预先建立的数据库,查找起来速度相当快。但通常这种速度只对在查找标识符时有明显效果。对于像函数名,变量名等的查找,强烈建议使用这两种方式进行查找。
  2. Search Files
    选择Search/Search Files或按Ctrl+Shift+F组合键,在弹出的Search Files窗口进行查找操作。
    在File Name框中可以填入文件名或文件夹。注意当要查询的文件夹双包含子文件夹时,可以勾选Options中的Include Subdirectiories,实现对各层文件的递归搜索。
  3. Search Project
    选择Search/Search Project,在弹出的Search Project窗口进行查找操作。操作与Loopup References几乎完全一致,它们各自保存上次搜索的配置。
2.1.2  替换
  1. 单文件替换
    选择Search/Replace或按Ctrl+H组合键,在弹出的Replace窗口进行查找操作。在Search项目里勾选Selection则仅对当前选中的文档部分进行替换。另外如果勾选了Confirm Replacements则是逐个确认替换,否则会同时替换所有符合替换条件内容。
  2. 多文件替换
    选择Search/Replace Files或按Ctrl+Shift+H组合键,在弹出的Replace Files 窗口进行查找操作。除了增加New框(替换后的内容)外,其余均与Search Files窗口相同,可参照查找部分的说明进行操作。

2.2  列操作

虽然开篇时就说过,SI的列操作功能比较弱,但不等于没有。先按下Alt键,接着就可用鼠标进行列选择,然后就可以删除指定的列。

2.3  无名技巧

这里介绍一些小技巧,大多数情况下我们可以无视它们的存在。但如果我们知道这些,某些时候,会有效提高工作效率。
  • 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分枝的代码。

3  学会偷懒-高级应用

4  附录1-SI中正则表达式

由于在查找及替换中,经常会使用用正则表达式6,这里对SI的正则表达式进行简单介绍。

4.1  通配符

正则表达式通配符总表:
Character Matches
^ (在表达式开始处) 行的开始部分
. 任意单个字符
[abc] 任意属于集合 abc 的单个字符
[^abc] 任意不属于集合 abc 的单个字符
* 前面字符的0个或多个重复
+ 前面字符的1个或多个重复
/t 一个 tab 字符
/s 一个空格符
/w 一个空白符(包括 tab 符和空格符)
$ 行的结束部分

4.2  表达式中的组

在执行替换操作时,组将大有用武之地。正则表达式的各个部分可以用/(/)进行分隔,分隔得到的每一项就是一个组。在进行替换时可通过组从匹配内容中抽取出特定串。在正则表达式中每个组都有一个编号,自左至右编号从1开始。
例如:abc/(xyx/)将能匹配 abcxyz ,此时组1就包含了 xyz 串。在进行替换操作时,就可以通过在替换后内容框中填入/1来取出这个字符串。推而广之,可以使用/<number>来取得组<number>所包含的串。
例如:当设定把/(abc/)/(xyz/)替换为/2/1的替换规则时,对于 abcxyz 被替换串,则组1包含 abc,组2包含 xyz,而替换后的内容定义为组2内容后跟组1内容(/2/1),因此将得到 xyzabc。
举个真实的使用例子,相信会增加大家的兴趣。有时为方便调试,代码中到处流浪着各种形式的mytrace调用
    mytrace("Create parameter list... ");

有时希望把它们全部注释掉,而有些时候又希望把它们全部恢复回来。这是个简单的例子,可以使用
    ^/(.*/)/(//*/)/(.*mytrace.*/)/(/*//)___FCKpd___6nbsp;==> /1/3

把它们恢复回来,而使用
    ^/(.*/)/(mytrace/)/(.*/)___FCKpd___7nbsp;==> /1/*/2/3*/

则完成把它们全部注释掉。

5  附录2-SI中的宏语言

我始终认为这是SI中最有趣的部分,这是一种功能强大的编程语言,几乎可以实现在编程过程可能使用到的各种功能。
这里不准备对如何实用宏语言进行编程作介绍(可参阅SI帮助文档。),只介绍如何使用已编好程序。为方便使用,我已把这些程序都集中放在utils.em文件中,下文就此文件进行论述。
该宏文件实现了一些在编码过程中可能会用到的功能, 如添加文件头、函数说明(使用时能自动添加文件名、函数名和当前日期)和宏定义,代码补全等。
使用说明:
  1. Project/Open Project...
    打开Base工程(该工程一般在"我的文档/Source Insight/Projects/Base"中);
  2. Project/Add and Remove Project Files...
    加入宏文件(即utils.em);
  3. 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文件,改成你需要的名字。

6  附录3-推荐格式

所谓人各有志,这里就不说啦。

7  结束

至此,已将我所知的所有关于Source Insight(未包括其附带的Macro语言)知识在此文档中描述出来。
如有错漏,请指正。
谢谢观赏
Create by L A T E X From C T E X

Footnotes:

1qiupingwu@gmail.com
2在计算机显示字体中,有等宽字体和非等宽字体两种类别。对于等宽字体中在相同字号的情况下,所有字符占据的空间是一样的,绝对公平。而非等宽字体则即使是同一字号,字形也是有大有小,并不固定的。
3当年我曾定义过黑白颠倒的颜色方案,那时看起来很酷,现在看来好累。
4我本热衷于使用左手鼠标,这里为照顾大多数,以右手鼠标为例。
5这个时候,不要太过于武断,不要想当然地认为程序一定执行至此,必要时可通过使用#error或#warning 进行预编译确认。
6这又是一个没有统一标准带来的罪恶,现代的编辑软件几乎都提供了正则表达式功能,虽然基本用法大致相同,但总存在不少细微的差异。常常会令人混淆,偶尔造成一些郁闷的感觉。
SourceInsight备份文件功能全攻略:从Open到Compare的实用技巧 本文深入解析SourceInsight备份文件功能,从Open backup file到Compare backup file,提供了一套完整的代码变更追踪与可视化对比实用技巧。通过详解备份文件机制、核心操作及高效工作流集成,帮助开发者利用这一被低估的利器,在熟悉的编辑环境中实现代码历史快照的精准管理与对比,有效提升开发与调试效率。 阅读详情

相关推荐

【微知】sourceinsight备份文件功能全解析:从Open到Compare的实用技巧

本文深入解析了Source Insight中强大却常被忽视的备份文件功能。详细介绍了如何通过Open backup file查看历史代码快照,并重点讲解了使用Compare backup file进行高效代码对比的实用技巧。该功能是Git等版本管理工具的有力补充,能极大提升日常开发中代码调试、重构和审查的效率。

weixin_29209801的博客 372

Source Navigator(Windows版)

著名开源软件Source Navigator的Windows版本,解压可用。最好的查看源代码工具。功能强,界面超爽,再也不用烦恼SI的bug了。

SourceInsight高效配置与实用技巧全解析(RGB优化、宏命令、路径显示)

本文全面解析SourceInsight的高效配置与实用技巧,重点涵盖RGB配色优化以缓解视觉疲劳、宏命令编写与使用以自动化复杂操作,以及开启全路径显示避免文件混淆。通过详细的步骤指导与实战案例,帮助开发者深度定制开发环境,显著提升源码阅读与编辑效率。

weixin_29216957的博客 337

SourceNavigator_6.0

Source-Navigator is a source code analysis tool. With it, you can edit your source code, display relationships between classes and functions and members, and display call trees. You can also build your projects, either with your own makefile, or by using Source-Navigator's build system to automatically generate a makefile. Source-Navigator works with the Insight GUI interface for GDB. Source-Navigator supports C, C++, Java, Tcl, [incr Tcl], FORTRAN and COBOL, and provides and SDK so that you can write your own parsers.

在Ubuntu上安装Source Navigator的详细步骤

这些是在Ubuntu上安装Source Navigator的详细步骤。通过按照上述步骤操作,你应该能够成功地安装并开始使用Source Navigator来改善你的代码阅读和理解体验。现在,你可以使用Source Navigator来导航和浏览代码了。你可以通过菜单或快捷键访问Source Navigator的各种功能,例如打开文件、搜索函数和浏览代码层次结构。Source Navigator是一个用于代码导航和浏览的工具,可以帮助程序员更轻松地阅读和理解大型代码库。安装Source Navigator。

InjeProgram的博客 496

source navigator安装过程以及问题解决办法。

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33672109的博客 437

初次使用Source Navigator

最近一直在看导师之前提的Vega Prime的文档,虽然Vega自带的html文档可以查询类和方法信息,但是因为数量太多,看着感觉好混乱。然后今天突然想到要找一个分析源码(可以只有头文件)的工具,就找到了Source Navigator工具。SourceNav可以将分析项目代码,生成类,方法等列表,代码层次结构和方法,变量引用关系。         百度上可以直接找到SourceNav的主页,它

Developing Questions & Discoveries 6593

SourceInsight配色方案优化与实用技巧

对比度是指在视觉图像中,不同元素之间的颜色或者亮度的差异程度。在代码编辑器或IDE(集成开发环境)中,对比度尤其重要,因为它直接影响到代码的可读性和视觉舒适度。良好的对比度可以使代码行号、标尺以及语法高亮部分从代码文本中脱颖而出,提升用户的编码效率。一个合适的对比度设置有助于用户更快地识别代码的结构,减少视觉疲劳,并保持长时间工作时的注意力集中。而一个对比度过高或过低的设置,则可能导致眼睛的不适,甚至影响到工作效率。在我们开始定制自己独特的颜色方案之前,有一些基本概念和原则需要了解。

weixin_36231030的博客 1000

sourceinsight 实用技巧

1、背景色选择     要改变背景色Options->preference->windows background->color设置背景色 2、解决字符等宽对齐问题     SIS默认字体是VERDANA,很漂亮。这网页上应该也是用的VERDANA字体。但由于美观的缘故,VERDANA字体是不等宽的。比如下面两行     llllllllll     MMMMMMMMMM     同样

louyong0571的专栏 460

代码编辑器 —— SourceInsight实用技巧

现有一个项目工程源码的文件夹project_SCode,通常把管理这些源码的source insight工程也建在该文件夹下,所以提前创建一个文件夹 si_project。提供智能代码补全,自动提示函数名、变量名等,并且能补全参数和代码片段,减少了开发者的记忆负担和输入错误。其高效的搜索功能,无论是全局搜索还是文件内搜索,都能迅速定位到所需的代码片段,极大地提高了开发效率。可以集成版本控制,支持常见的版本控制系统,方便开发者查看文件修改历史,进行代码的版本管理。上面的窗口可以在Project菜单里打开。

改变自己现在能改变的,珍惜自己现在所拥有的 1876

SourceInsight一些使用技巧

SourceInsight实用技巧 2007年4月19日 若干年前曾写个一篇关于source insight宏的使用文章,放到这里后就一直没有理会。过了很久之后,偶然的一次查找,才知道已经有不少地方引用那篇文章,想来文章还是有一定用处的。 前段时间刚好有空闲时间,于是又写一篇关于source insight的文章,这次侧重于实用技巧的介绍,希望对大家有帮助。 我常常这

qisefengzheng的专栏 总有一天你将破蛹而出 313

Source Insight实用技巧

作者:Jupin http://blog.csdn.net/jupin/article/details/1832536 SourceInsight实用技巧 2007年4月19日 若干年前曾写个一篇关于source insight宏的使用文章,放到这里后就一直没有理会。过了很久之后,偶然的一次查找,才知道已经有不少地方引用那篇文章,想来文章还是有一定用处的。 前段时间刚好有

guchongshimao2的专栏 500

SourceInsight几个经典用法

1.如何找回失去的context window   context window 在看程序时很有用,当用户指向某个函数或变量时,在context window中都会有该变量或函数的定义;但有时会为了增加程序的容量或者不小心,将context window变成独立窗口,sourceinsight没有简单的菜单来恢复它。下面介绍一种网上流传的方法:步骤为:

知识为王 2972

sourceinsight教程

SourceInsight教程

Zhichao_Zhang的博客 3376

Ubuntu下sourceInsight安装及使用

转载至:http://blog.csdn.net/buptgshengod 1.背景         source insight是一款源码查看工具,博主准备用这个查看android源码。 2.安装      1. sudo apt-get install wine (安装wine,用wine来安装source insight)   2.下载sourceinsight的exe文件

克里斯.罗 4928

SourceInsight高效配置与实用技巧全解析(RGB调色、符号高亮、路径优化、宏命令)

本文全面解析SourceInsight的高效配置与实用技巧,涵盖护眼RGB调色、符号高亮、文件全路径显示及宏命令自动化等核心功能。通过视觉优化、导航增强与自动化集成,帮助C/C++及嵌入式开发者深度定制编码环境,显著提升代码阅读与开发效率。

weixin_29251131的博客 126
上一篇: 手动部署EJB 亲自体验EJB开发流程
下一篇: 银联三度增资收官 求解腹背受敌之困
prayforever
博客等级 码龄18年 3粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值