source insight的使用技巧.doc_第1页
source insight的使用技巧.doc_第2页
source insight的使用技巧.doc_第3页
source insight的使用技巧.doc_第4页
source insight的使用技巧.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

在SI中样式是可以被继承,如果要从根本上改变字体,最简单的方式就是直接修改根样式中的字体,因为其它样式都会由此继承而来。选择Options/Document Options页面内的Font Options中的Screen Fonts字体,即可改变根样式中的字体。SI中的默认配置为Verdana字体,是一种非等宽字体,为了使编写的代码在各种编辑器中看起来都有良好的对齐效果,这里强烈建议使用等宽字体,Courier、New Courier、宋体等都是较好的选择。颜色定义选择Options/Style Properties页面,就可以在其中修改所有样式了。选择等号(=)表示继承Parent Style,也可以选择Pick(或者ON/OFF等)去配置一个新值。 标识符样式选择在与颜色定义一节同样的界面内即可完成此项配置。 背景色选择在希望要改变背景色的窗口点击鼠标右键(假定使用的是右手鼠标),选择上下文菜单的 xxx Window Properties项,然后点击弹出窗口的Back Color按钮,即可修改该窗口背景色。对于SI的源码主窗口,只需选择上下文菜单的Special Window Color项即可完成背景色修改。 配置合理的默认值高效工作使用合理的缩进选择Options/Document Options页面,点击其内的Auto Indent按钮,在弹出的Auto Indenting窗口中,默认配置为 Auto Indent Type选择Smart,且勾选了Smart Indent Options中的两个可选项,这样得到的默认缩进效果为 while(1)I每次都要手工去调整其缩进,其实只要把两个勾选项去掉,就可以得到while(1)I何乐而不为呢? 显示坐标选择Options/Document Options页面,勾选其中的Show line numbers。同时勾选其中的Show right margin,我们就可显示一条右边界,随时提醒我们是否该行代码写得过长了。 创建便捷的快捷键快乐工作几个较常用的快捷键默认情况下,SI已经定义了很多非常实用的快捷键: F5指定行号,实现行跳转,在遇到编译错误的时候,能特别方便的找到出错行。 Shift+F8高亮显示指定标识,快速浏览标识的使用情况。 Ctrl+鼠标点击标识直接跳转至标识定义处。 Ctrl+F本文件内查找。 F3本文件查找结果的上一个。 F4本文件查找结果的下一个。 F7打开Browse Project Symbols窗口,快速浏览工程内标识定义。 Ctrl+M创建或查找书签,方便下次找回此位置。 自定义快捷健选择Options/Key Assignments,在弹出的Key Assignments窗口中可自由添加自己喜欢的快捷键。比较值得推荐的有如下几个快捷键定义: Edit: Drag Line Down光标当前行下移。 Edit: Drag Line Up光标当前行下移。 Edit: Join Lines当前行和下一行连接成一行。 更多的快捷键如果你正好对SI的Marco语言(下文将会介绍)有研究,那么还可以定义更多有用的快捷键,比如添加文件头、函数头、注释等(下文在介绍Marco语言时会介绍如何实现)。 小技巧-中级应用查找与替换在SI中支持多种查找及替换方式,除了上文提到的文件内查找外,还支持工程范围内查找、目录查找、指定多文件查找等等。 查找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几乎完全一致,它们各自保存上次搜索的配置。 替换1. 单文件替换选择Search/Replace或按Ctrl+H组合键,在弹出的Replace窗口进行查找操作。在Search项目里勾选Selection则仅对当前选中的文档部分进行替换。另外如果勾选了Confirm Replacements则是逐个确认替换,否则会同时替换所有符合替换条件内容。 2. 多文件替换选择Search/Replace Files或按Ctrl+Shift+H组合键,在弹出的Replace Files 窗口进行查找操作。除了增加New框(替换后的内容)外,其余均与Search Files窗口相同,可参照查找部分的说明进行操作。 列操作虽然开篇时就说过,SI的列操作功能比较弱,但不等于没有。先按下Alt键,接着就可用鼠标进行列选择,然后就可以删除指定的列。 无名技巧这里介绍一些小技巧,大多数情况下我们可以无视它们的存在。但如果我们知道这些,某些时候,会有效提高工作效率。 Smart Rename在上下文件菜单中选Smart Rename或按Ctrl+组合键,即可弹出Smart Rename窗口。它有很强大的功能,但最便捷的使用方式是更改函数内局部变量的名字,操作只作用于函数内部,速度非常快。 Renumber使用Ctrl+R将弹出Renumber窗口,这个用于处理数字顺序排列的情况相当有效,比如数组下标。例如现有代码 array0=1;array1=2;array2=3;现在要改为 array0=0;array1=1;array2=2;array3=3;当然可以一个个修改,但最快的方式是在array0=1;之前添加array0=0;,然后列选数组下标,使用Renumber功能以 0为起始值重填数值。 Edit Condition很多代码尤其是驱动代码,当中有大量的预编译定义,以实现对不同硬件配置的支持。在阅读这样的代码时最痛苦的是不能简单判断程序实际执行的代码分枝。大量分枝同时存在,常常会混淆我们的视听。比如对于下面的代码: #ifdef DEV1/* DEV1代码代码*/#else/*其它设备执行代码*/#endif如果确定我们当前分析的是DEV1的执行情况,那么可以选择上下文件菜单的Edit Condition 选项,在弹出的Conditional Parsing窗口中把DEV1的值设置为True,那么#ifdef DEV1就等价于#if1了,相当注释掉了#else分枝的代码。反之,设置为Flase时,则注释掉#ifdef DEV1分枝的代码。 学会偷懒-高级应用附录1-SI中正则表达式由于在查找及替换中,经常会使用用正则表达式,这里对SI的正则表达式进行简单介绍。 通配符正则表达式通配符总表: CharacterMatches(在表达式开始处)行的开始部分.任意单个字符abc任意属于集合abc的单个字符abc任意不属于集合abc的单个字符*前面字符的0个或多个重复+前面字符的1个或多个重复/t一个tab字符/s一个空格符/w一个空白符(包括tab符和空格符)$行的结束部分表达式中的组在执行替换操作时,组将大有用武之地。正则表达式的各个部分可以用/(和/)进行分隔,分隔得到的每一项就是一个组。在进行替换时可通过组从匹配内容中抽取出特定串。在正则表达式中每个组都有一个编号,自左至右编号从1开始。例如:abc/(xyx/)将能匹配abcxyz,此时组1就包含了xyz串。在进行替换操作时,就可以通过在替换后内容框中填入/1来取出这个字符串。推而广之,可以使用/来取得组所包含的串。例如:当设定把/(abc/)/(xyz/)替换为/2/1的替换规则时,对于abcxyz被替换串,则组1包含abc,组2包含xyz,而替换后的内容定义为组2内容后跟组1内容(/2/1),因此将得到xyzabc。举个真实的使用例子,相信会增加大家的兴趣。有时为方便调试,代码中到处流浪着各种形式的mytrace调用 mytrace(Createparameterlist.);有时希望把它们全部注释掉,而有些时候又希望把它们全部恢复回来。这是个简单的例子,可以使用 /(.*/)/(/*/)/(.*mytrace.*/)/(/*/)_FCKpd_6nbsp;=/1/3把它们恢复回来,而使用 /(.*/)/(mytrace/)/(.*/)_FCKpd_7nbsp;=/1/*/2/3*/则完成把它们全部注释掉。 附录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(#)casebreak;default:对于InsFunHeader宏,如果有如下函数体 intnOpenConfigFile(char*pchMemConfig,char*pchFlashConfig,intnSize,intnMode)I光标在函数体内时运行该宏,那么将会在函数体上方得到 /*nOpenConfigFile-*DESCRIPTION:-*Input:N/A*Output:N/A*Returns:N/A*modificationhistory*-*1.00,Apr19,2007, T357 written.*-*/其中的函数名及编写日期自动按实际情况填充,T357串可通过修改utils.em文件,改成你需要的名字。 附录3-推荐格式所谓人各有志,这里就不说啦。 结束至此,已将我所知的所有关于Source Insight(未包括其附带的Macro语言)知识在此文档中描述出来。如有错漏,请指正。谢谢观赏Create byLATEXFrom CTEXFootnotes:12在计算机显示字体中,有等宽字体和非等宽字体两种类别。对于等宽字体中在相同字号的情况下,所有字符占据的空间是一样的,绝对公平。而非等宽字体则即使是同一字号,字形也是有大有小,并不固定的。3当年我曾定义过黑白颠倒的颜色方案,那时看起来很酷,现在看来好累。4我本热衷于使用左手鼠标,这里为照顾大多数,以右手鼠标为例。5这个时候,不要太过于武断,不要想当然地认为程序一定执行至此,必要时可通过使用#error或#warning 进行预编译确认。6这又是一个没有统一标准带来的罪恶,现代的编辑软件几乎都提供了正则表达式功能,虽然基本用法大致相同,但总存在不少细微的差异。常常会令人混淆,偶尔造成一些郁闷的感觉。-源:/flyyanqu/archive/2008/03/27/2222799.aspx1、缩进与tab(1)Options菜单PreferencesTyping卡,勾掉下面两项Typing tab indents line,regardless of selection,空行按tab无法前进Typing tab replaces current selection,选定部分内容、再按tab时会清除所选(2)Options菜单Document Options(针对不同文件类型,分别进行设置)下拉左上文件类型框、选择合适类型(c源文件)Editing Options框中,tab width=2Editing Options框中,勾选Expand tabs(这样,按tab键、等价于输入2个空格)(3)Options菜单Document Options选择合适的文件类型点击右边中间的Auto Indent钮在弹出的框中,左边一定要点Smart,右边有两个复选框Indent Open Brace和Indent Close Brace,具体效果可以看SIS的HELP。按照部门里的编程风格要求,最方便的就是把两个复选框都取消掉,然后点OK。勾选Auto Indent之SMART的效果在C程序里,如果遇到行末没有分号的语句,如IF, WHILE, SWITCH等,写到该行末按回车,则新行自动相对上一行缩进两列。勾掉Indent Open Brace和Indent Close Brace的效果继上一段,在相对缩进行里,如果输入,则自动和上一行列对齐(好像勾不勾都会有这个功能);而输入时,不会与下面的行对齐(这是勾上Indent Open Brace时的效果)。2、向项目中添加文件时,只添加特定类型的文件(文件类型过滤器)有个同事比较生猛,得整汇编代码,但在SIS里建立PROJECT并ADD TREE的时候,根据默认设置并不会把该TREE里面所有汇编文件都包含进来,只加了.inc和.asm后缀的,.s后缀的没有。而且用SIS打开.s的文件,一片黑白没有色彩,感觉回到DOS的EDIT时代了解决方法是在Options-Document Options里面,点左上的Document Type下拉菜单,选择x86 Asm Source File,然后在右边的File filter里*.asm;*.inc;的后面加上*.s;接着CLOSE就可以了。上面两个问题解决了,但注意加入*.s后还需要重新ADD TREE一遍才能把这些汇编加到PROJECT里面。3、去掉功能强大但是无用的自动完成功能Options菜单PreferencesTyping卡Auto Completion框,勾掉Use automatic symbol completion window(这里是SIS的全局设置)Options菜单Document OptionsEditing Options框中,勾掉Allow auto-complete(局部设置)上面两项必须全部勾选,才能启用Auto Completion功能4、恢复小键盘的“+,-,*,/”功能Options菜单Key assignments,通过关键词Scroll找到Scroll Half Page Up,取消小键盘/;通过关键词Scroll找到Scroll Half Page Down取消小键盘*;通过关键词Function找到Function Up,取消小键盘-,通过关键词Function找到Function down,取消小键盘+。5、恢复ctrl+a的全选功能通过关键词save找到save all,更改为ctrl+shift+a,通过关键词select找到select all,更改为ctrl +a6、解决字符等宽对齐问题。SIS默认字体是VERDANA,很漂亮。这网页上应该也是用的VERDANA字体。但由于美观的缘故,VERDANA字体是不等宽的。比如下面两行llllllllllMMMMMMMMMM同样10个字符,长度差多了.用VERDANA来看程序,有些本应该对齐的就歪了。解放方法是使用等宽的字体,但肯定比较丑。可以用DOS字体,也就是记事本里的默认字体sysfixed很丑,要有心理准备。比较推荐的是用Courier New。SourceInsight提供的功能1、解析日志信息时非常有用的Source Link总地说来,SourceLink根据特定的搜索模式,把当前文件中满足模式的行、链接到由该行指定的其他源文件中。所谓特定的搜索模式,共有两种“File, then line”和“Line, then file”,其中前后两部分依靠正则表达式的组的概念来予以分割。如果当前文件具有匹配行,比如“Error d:tcsrcq5.c 18: Lvalue required in function jsSort”,那么SourceInsight在该行创建SourceLink、把该行链接到由该行指定的文件中(即d:tcsrcq5.c,第18行)。1.1创建SourceLink运行Search菜单的Parse Source Links命令,在弹出的框中、选择搜索模式、并填入相应的正则表达式串,点OK,SIS就会解析当前文件,如果有匹配,就创建SourceLink。1.2在解析日志信息时,使用SourceLink可以打开日志信息,运行Parse Source Links命令,日志中能够匹配模式的每一行(通常是含有错误信息的行)、就会被设置上一个SourceLink1.3在解析自定义命令输出时,使用SourceLink首先勾选Custom Command中的“Parse Links in Output”,然后选择特定的搜索模式,最后填入合适的正则表达式。这样,Source Insight把输出信息作为当前搜索用文件;并且,如果有匹配行(通常即编译错误信息行),SIS为该行创建SourceLink、并把每一个错误信息中给定的文件(和行号)作为link目的地,这对于我们修改源代码错误非常有帮助。2、替换(Replace)VS上下文敏感的智能重命名(Context-Sensitive Smart Rename)2.1替换(Replace)目前来说,普通的替换命令、快捷键为ctrl+H,足以已满足工作要求。在弹出的替换窗口中,在Search框中勾选Selection来只在所选文本区域中替换(当然这时你要先选定区域然后再按ctrl+H)、勾选WholeFile来在整个当前文件内替换、两者都不勾选来从当前光标处替换至文件末尾;点右边的Files按钮,可选择替换多个文件的内容。2.2上下文敏感的智能重命名(Context-Sensitive Smart Rename)Smart Rename命令、快捷键是Ctrl+,是上下文敏感的全局搜索替换。它可以智能地重命名全部项目文件中的一个标示符。SourceInsight的搜索索引(search index)使得搜索过程进行地非常快。而且,使用Smart Rename所做的替换会被记录在Search Results窗口中,每一条替换记录旁有一个SourceLink链接到替换发生地文件。Smart Rename可以用来重命名标记(symbol)。如果勾选了Smart Reference Matching选项,Smart Rename就只在正确的上下文范围内进行重命名。它可以智能地重命名全部项目文件中的一个标示符;它可以重命名函数本地变量,类或结构体成员、函数。在弹出的Smart Rename窗口中有下面几项Old Name填旧名称。光标下的词会被自动加载;光标的位置非常重要,这是因为Source Insight会根据本地上下文背景、准确地确定你想要重命名哪一个标记。推荐只填单个词、而不是字符串。如果你在命名成员变量、或本地变量(),Old Name框中会显示完全标记名、即上层容器名+标记名。例如,框中的“DocDraw.paintStruc”代表DocDraw是函数名,paintStruc是函数的本地成员变量。New Name填新名称。只填标记名,不填上层容器名。Output Search Results如果勾选,搜索替换结果日志会被输出到Search Results窗口中。可以通过Windows菜单来切换,或ctrl+tab切换察看。并且每一条记录旁会有SourceLink链接到替换发生地文件。Confirm Each Replacement每次替换询问。Skip Comments不重名注释部分。【使用心得列表】()如何用Smart Rename重命名数组的数组名?如果只选取数组名,会报错!()如果勾掉Smart Reference Matching,会搜索全部项目文件,并且Old Name框中不显示完全限定名;如果勾选Smart Reference Matching,无法重命名数组名,而且鼠标位置不正确时会报错。应该如何应对?3、在SourceInsight中提供的正则表达式3.1在SourceInsight中提供的正则表达式正则表达式,是用来匹配复杂模式的特殊搜索用字符串。正则表达式串中,许多字符具有特殊的含义。例如,有个特殊的字符代表“行首”。下面是SourceInsight提供的所有可用特殊字符Table 4.3: Regular Expression CharactersCharacterMatches (at the beginning only)beginning of line。如Hello,匹配Hello在句首。.any single characterabcany single character that belongs to the set abcabcany single character that does not belong to the set abc*zero or more occurrences of theprecedingcharacter+one or more occurrences of theprecedingcharacterta tab charactersa space characterwwhite space (a tab or a space character)$the end of the line。如TRUE$,匹配TRUE在句尾。转义字符。如果在它后面有元字符,取消其特殊含义。可利用“(”和“)”、把正则表达式分割成不同的组;模式中的每个组自左向右指定为Group #n,n=1,2,;组的概念在替换时很有用。例如abc(xyz)可匹配abcxyz,其中xyz被认为是group#1,利用21来替换(abc)(xyz),替换结果为xyzabc。3.2正则表达式在配置tc编译器中的应用正则表达式格式与源代码文件路径相对应,这里我的tc安装目录为d:tc,tc源文件放在d:tcsrc下,并命名为qn.c或qtn.c(其中n=1,2,)。观察Tc编译器某一次输出错误信息的格式Errord:tcsrcq5.c 18: Lvalue required in function jsSort则我们要匹配“d:tcsrcq5.c 18”部分,进一步地,按照SourceInsight捕捉输出并加以解析时的要求,要以组的形式、分别匹配“d:tcsrcq5.c 18”中的文件部分和行号部分行号(1-90-9*)空格行号s(1-90-9*)文件名(d:tcsrcqQtT1-90-9*.cC)全部加起来为(d:tcsrcqQtT*1-90-9*.cC)s(1-90-9*)3.3正则表达式在配置javac编译器中的应用我的JAVA_HOME是c:jdk,我的java源文件放于d:javasrc中,并命名为qn.java或qtn.java(其中n=1,2,)。观察JDK编译器某一次输出错误信息的格式D:javasrcQ3.java:3: ; expected正则表达式为(dD:javasrcqQtT*1-90-9*.java):(1-90-9*)4、自定义命令自定义命令与项目相关,在一个项目中定义的所有自定义命令属于该项目、只对该项目有效(包括快捷键等)。自定义命令类似于命令行批处理文件。SIS允许自定义命令在后台运行;并可以捕捉自定义命令的输出、放置于文件中、或粘贴入当前光标插入点。分别利用上面SIS对输出信息的处理方式,自定义命令对集成编译器相当有用,可以捕捉编译器输出并创建SourceLink寻错;自定义命令对于文本过滤也相当有用,可选中待过滤区块、运行Sort自定义命令、粘贴回选定区块、即完成文本过滤。请按下面步骤创建自定义命令Options菜单Custom Command点右边Add钮、填入新自定义命令名称,或下拉左边Commands、选择命令进行修改Run框、填入待执行命令行,可含有特殊元字符,见后面的元字符表Dir框、执行命令行时应处的目录,如不填,以源代码文件所在目录为命令执行目录勾选Output框的Capture Output、输出被捕捉,如果勾选Paste Output,输出被粘贴勾选Control Group框中的Save Files First、SIS会在运行命令前先检查文件是否保存勾选Control Group框中的Pause When Done、SIS会在命令结束后暂停、方便检查勾选Source Links in Output框中的Parse Source Links,?/psource insight常用宏转自:/Jupin/archive/2005/02/04/281020.aspx说明: 该宏文件实现一些编码程中能会到的功能, 如添加文件头、函数说明和宏定义等, 使用时能自动添加文件名、函数名和当前日期.使用说明: 1. Project-Open Project. 打开Base工程(该工程一般在我的文档/Source Insight/Projects/Base中); 2. Project-Add and Remove Project Files. 加入宏文件(即Gaoke.em); 3. Options-Menu Assignments 打开Menu Assi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论