本文主要是介绍linux编程技巧--sourceinsight使用技巧,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 1.3 创建便捷的快捷键快乐工作1.3.1 几个较常用的快捷键默认情况下,SI已经定义了很多非常实用的快捷键:
F5
指定行号,实现行跳转,在遇到编译错误的时候,能特别方便的找到出错行。
Shift+F8
高亮显示指定标识,快速浏览标识的使用情况。
Ctrl+鼠标点击标识
直接跳转至标识定义处。
Ctrl+F
本文件内查找。
F3
本文件查找结果的上一个。
F4
本文件查找结果的下一个。
F7
打开Browse Project Symbols窗口,快速浏览工程内标识定义。
Ctrl+M
创建或查找书签,方便下次找回此位置。
2 小技巧-中级应用
2.1 查找与替换在SI中支持多种查找及替换方式,除了上文提到的文件内查找外,还支持工程范围内查找、目录查找、指定多文件查找等等。
2.1.1 查找
Loopup References
我们最常用的一种查找方式是选择Search/Lookup References或按Ctrl+/组合键再或者鼠标点 R按钮,在弹出的Loopup References窗口进行查找操作。 在Search Method中有四种可选的查找方式:SimpleString、Regular Expression、 Keyword Expression和Look UpReference。其中Simple String是最普通的查找方式,可以查找文件中出现的任意字符或字符,甚至可以查找 _upap || u这样的字符串,但是在工程较大时,查找过程会较慢。 RegularExpression查找方式将在后面讲述正则表达时会介绍到,这里暂时按下不表。 Keyword Expression和Look UpReference查找的结果基本相同,但是显示方式略有差异。这两种方式都是使用SI预先建立的数据库,查找起来速度相当快。但通常这种速度只对在查找标识符时有明显效果。对于像函数名,变量名等的查找,强烈建议使用这两种方式进行查找。
Search Files
选择Search/Search Files或按Ctrl+Shift+F组合键,在弹出的Search Files窗口进行查找操作。 在FileName框中可以填入文件名或文件夹。注意当要查询的文件夹双包含子文件夹时,可以勾选Options中的IncludeSubdirectiories,实现对各层文件的递归搜索。
Search Project
选择Search/Search Project,在弹出的Search Project窗口进行查找操作。操作与Loopup References几乎完全一致,它们各自保存上次搜索的配置。
2.1.2 替换
单文件替换
选择Search/Replace或按Ctrl+H组合键,在弹出的Replace窗口进行查找操作。在Search项目里勾选Selection则仅对当前选中的文档部分进行替换。另外如果勾选了Confirm Replacements则是逐个确认替换,否则会同时替换所有符合替换条件内容。
多文件替换
选择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 选项,在弹出的ConditionalParsing窗口中把DEV1的值设置为True,那么 #ifdef DEV1就等价于#if1了,相当注释掉了#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 符和空格符)
$ 行的结束部分
退出程序 : Alt+F4
重画屏幕 : Ctrl+Alt+Space
完成语法 : Ctrl+E
复制一行 : Ctrl+K
恰好复制该位置右边的该行的字符 : Ctrl+Shift+K
复制到剪贴板 : Ctrl+Del
剪切一行 : Ctrl+U
剪切该位置右边的该行的字符 : Ctrl+;
剪切到剪贴板 : Ctrl+Shift+X
剪切一个字 : Ctrl+,
左边缩进 : F9
右边缩进 : F10
插入一行 : Ctrl+I
插入新行 : Ctrl+Enter
加入一行 : Ctrl+J
从剪切板粘贴 : Ctrl+Ins
粘贴一行 : Ctrl+P
重复上一个动作 : Ctrl+Y
重新编号 : Ctrl+R
重复输入 : Ctrl+
替换 : Ctrl+H
智能重命名 : Ctrl+'
关闭文件 : Ctrl+W
关闭所有文件 : Ctrl+Shift+W
新建 : Ctrl+N
转到下一个文件 : Ctrl+Shift+N
打开 : Ctrl+O
重新装载文件 : Ctrl+Shift+O
另存为 : Ctrl+Shift+S
显示文件状态 : Shift+F10
激活语法窗口 : Alt+L
回到该行的开始 : Home
回到选择的开始 : Ctrl+Alt+[
到块的下面 : Ctrl+Shift+]
到块的上面 : Ctrl+Shift+[
书签 : Ctrl+M
到文件底部 : Ctrl+End, Ctrl+(KeyPad) End
到窗口底部 : (KeyPad) End (小键盘的END)
到一行的尾部 : End
到选择部分的尾部 : Ctrl+Alt+]
到下一个函数 : 小键盘 +
上一个函数 : 小键盘 -
后退 : Alt+,, Thumb 1 Click
后退到索引 : Alt+M
向前 : Alt+., Thumb 2 Click
转到行 : F5, Ctrl+G
转到下一个修改 : Alt+(KeyPad) +
转到下一个链接 : Shift+F9, Ctrl+Shift+L
回到前一个修改 : Alt+(KeyPad) -
跳到连接(就是语法串口列表的地方) : Ctrl+L
跳到匹配 : Alt+]
下一页 : PgDn, (KeyPad) PgDn
上一页 : PgUp, (KeyPad) PgUp
向上滚动半屏 : Ctrl+PgDn, Ctrl+(KeyPad) PgDn, (KeyPad) *
向下滚动半屏 : Ctrl+PgUp, Ctrl+(KeyPad) PgUp, (KeyPad) /
左滚 : Alt+Left
向上滚动一行 : Alt+Down
向下滚动一行 : Alt+Up
右滚 : Alt+Right
选择一块 : Ctrl+-
选择当前位置的左边一个字符 : Shift+Left
选择当前位置右边一个字符 : Shift+Right
选择一行 : Shift+F6
从当前行其开始向下选择 : Shift+Down
从当前行其开始向上选择 : Shift+Up
选择上页 : Shift+PgDn, Shift+(KeyPad) PgDn
选择下页 : Shift+PgUp, Shift+(KeyPad) PgUp
选择句子(直到遇到一个 . 为止) : Shift+F7, Ctrl+.
从当前位置选择到文件结束 : Ctrl+Shift+End
从当前位置选择到行结束 : Shift+End
从当前位置选择到行的开始 : Shift+Home
从当前位置选择到文件顶部 : Ctrl+Shift+Home
选择一个单词 : Shift+F5
选择左边单词 : Ctrl+Shift+Left
选择右边单词 : Ctrl+Shift+Right
到文件顶部 : Ctrl+Home, Ctrl+(KeyPad) Home
到窗口顶部 : (KeyPad) Home
到单词左边(也就是到一个单词的开始) : Ctrl+Left
到单词右边(到该单词的结束) : Ctrl+Right
排列语法窗口(有三种排列方式分别按1,2,3次) : Alt+F7
移除文件 : Alt+Shift+R
同步文件 : Alt+Shift+S
增量搜索(当用Ctrl + F 搜索,然后按F12就会转到下一个匹配) : F12
替换文件 : Ctrl+Shift+H
向后搜索 : F3
在多个文件中搜索 : Ctrl+Shift+F
向前搜索 : F4
搜索选择的(比如选择了一个单词,shift+F4将搜索下一个) : Shift+F4
搜索 : Ctrl+F
浏览本地语法(弹出该文件语法列表窗口,如果你光标放到一个变量/函数等,那么列出本文件该变量/函数等的信息) : F8
浏览工程语法 : F7, Alt+G
跳到基本类型(即跳到原型) : Alt+0
跳到定义出(也就是声明) : Ctrl+=, Ctrl+L Click (select), Ctrl+Double L Click
检查引用 : Ctrl+/
语法信息(弹出该语法的信息) : Alt+/, Ctrl+R Click (select)
高亮当前单词 : Shift+F8
语法窗口(隐藏/显示语法窗口) : Alt+F8
关闭窗口 : Alt+F6, Ctrl+F4
最后一个窗口 : Ctrl+Tab, Ctrl+Shift+Tab
几个较常用的快捷键
默认情况下,SI已经定义了很多非常实用的快捷键:
F5
指定行号,实现行跳转,在遇到编译错误的时候,能特别方便的找到出错行。
Shift+F8
高亮显示指定标识,快速浏览标识的使用情况。
Ctrl+鼠标点击标识
直接跳转至标识定义处。
Ctrl+F
本文件内查找。
F3
本文件查找结果的上一个。
F4
本文件查找结果的下一个。
F7
打开Browse Project Symbols窗口,快速浏览工程内标识定义。
Ctrl+M
创建或查找书签,方便下次找回此位置。
Source Insight技巧收集
1、背景色选择
要改变背景色Options->preference->windows background->color设置背景色
2、解决字符等宽对齐问题。
SIS默认字体是VERDANA,很漂亮。这网页上应该也是用的VERDANA字体。但由于美观的缘故,VERDANA字体是不等宽的。比如下面两行
llllllllll
MMMMMMMMMM
同样10个字符,长度差多了.用VERDANA来看程序,有些本应该对齐的就歪了。解放方法是使用等宽的字体,但肯定比较丑。比较推荐的是用Courier New。
3、解决TAB键缩进问题
Options-> Document Options里面的右下角Editing Options栏里,把Expand tabs勾起来,然后确定。OK,现在TAB键的缩进和四个空格的缩进在SIS里面看起来就对齐咯
4、SI中的自动对齐设置:
在C程序里, 如果遇到行末没有分号的语句,如IF, WHILE, SWITCH等, 写到该行末按回车,则新行自动相对上一行缩进两列。
Option->Document option下的Auto Indient中Auto Indient Type有三种类型 None,Simple,Smart。个人推荐选用Simple类型。
5、向项目中添加文件时,只添加特定类型的文件(文件类型过滤器)
编辑汇编代码时,在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里面。
6、添加文件类型
用户可以定义自己的类型,Options->Document Options->add type,定义文件类型名以及文件名后缀。
勾选include when adding to projects在添加目录下文件到工程是该类文件就会添加进SI的工程。
如果需要将所有文件添加进SI的工程,可以定义一种文件类型*.*。
7、恢复ctrl+a的全选功能
通过关键词save 找到save all,更改为ctrl+shift+a,通过关键词select找到select all,更改为ctrl +a
Source Insight常用的快捷键:
Ctrl+= :Jump to definition
Alt+/ :Look up reference
F3 : search backward
F4 : search forward
F5: go to Line
F7 :Look up symbols
F8 :Look up local symbols
F9 :Ident left
F10 :Ident right
Alt+, :Jump backword
Alt+. : Jump forward
Shift+F3 : search the word under cusor backward
Shift+F4 : search the word under cusor forward
F12 : incremental search
Shift+Ctrl+f: search in project
shift+F8 : hilight word
Source Insight的窗口操作:
project window Ctrl+O打开
symbol window Alt+F8打开和关闭
Contex Window 自定义键打开和关闭
Relation Window 自定义键打开 先锁定再刷新联系
在Source Insight中添加自定义功能的步骤如下:
1.Source Insight中,Options->Custom Commands...->Add...,New Command name 随便写,我的是"Edit with Vim"
2.Run中写入: "C:Program FilesVimvim63gvim.exe" --remote-silent +%l %f
意思是在当前已经打开的gvim窗口里面打开当前的文件,并且跳转到指定行
%l为当前的行号,%f为文件名
使用 --remote-silent 的作用是,如果已经打开了对应文件,就不会打开第二次,而是在已经打开的文件里跳转到对应行
3.还是同一个对话框里面,选择Keys->Assign New Key...->按F12,如果你已经将F12设置给其他命令,选择其他的按键就行了
下面是一些常用自定义功能:( CUSTOM COMMANDS )
打开资源管理器并选中当前文件
ShellExecute open explorer /e,/select,%f
查看log
"C:Program FilesTortoiseSVNinTortoiseProc.exe" /command:log /path:%f /notempfile /closeonend
diff
"C:Program FilesTortoiseSVNinTortoiseProc.exe" /command:diff /path:%f /notempfile /closeonend
取得锁定(check out)
"C:Program FilesTortoiseSVNinTortoiseProc.exe" /command:lock /path:%f /notempfile /closeonend
提交(check in)
"C:Program FilesTortoiseSVNinTortoiseProc.exe" /command:commit /path:%f /notempfile /closeonend
更新(update)
"C:Program FilesTortoiseSVNinTortoiseProc.exe" /command:update /path:%f /notempfile /closeonend
更新整个目录(update all)
"C:Program FilesTortoiseSVNinTortoiseProc.exe" /command:update /path:*.* /notempfile /closeonend
取消锁定(undo check out)
"C:Program FilesTortoiseSVNinTortoiseProc.exe" /command:revert /path:%f /notempfile /closeonend
在ultriEdit中编辑
"C:Program FilesUltraEdit-32/uedit32" %f
在vim中编辑并定位到当前行
"C:Program FilesVimvim63gvim.exe" --remote-silent +%l %f
汇总其他小技巧:
让{ 和 } 不缩进:
Options->Document Options->Auto Indent->Indent Open Brace/Indent Close Brace
hao space: SourceInsight 小技巧
1、按住"ctrl", 再用鼠标指向某个变量,点击一下,就能进入这个变量的定义。
2、今天把一个用sourceinsight排版整齐的C文件,偶然用VC打开一看,全乱了。研究了半天,发现SI对每个字符的宽度不太一致。
请教同事发现选上"view --> draft view", 就可以让每个字符的宽度一致了。快捷键是 "Alt + F12"
3、"shift+F8" 标亮所有文本中光标所在位置的单词
4、跳到某一行:"ctrl + g"
Source Insight是阅读和编写代码的好东东,基本上也算得上是经典之作了,虽然还有一点点小bug,不过对于我们这些C程序员来说可是一旦拥有别无所求。下列小技巧是在工作中同事整理总结的,对提高工作效率多少有点帮助,其中有些是对应于SVN的,没有使用SVN做版本管理的人就不要白费力气了。
ShellExecute open explorer /e,/select,%f
/*作用是在资源管理器中打开当前编辑文件并选中*/
/*可以设置快捷键如ctrl+e,这样能很方便的在资源管理器打开对应的文件,并进行tortoiseSVN的相关操作*/
X:Progra~1TortoiseSVNinTortoiseProc.exe /command:log /path:% /notempfile /closeonend
/*使用前注意更改对应的bin安装路径*/
/*作用是直接查看当前文件的svn log*/
/*可以设置快捷键如ctrl+l*/
X:Progra~1TortoiseSVNinTortoiseProc.exe /command:diff /path:% /notempfile /closeonend
/*使用前注意更改对应的bin安装路径*/
/*作用是直接查看当前文件和基准版本的比较*/
/*可以设置快捷键如ctrl+d*/
Source Insight中的文件过滤器
遇到在新建工程的时候,需要加入一些除了.c .h 等之外的文件,比如.s,.scf ,Makefile和ReleaseNotes等文件,而每次新建工程的时候,即使取消了shown only known document types,和在点击Add All之后选择了Recusively add lower sub-directories ,也还是不能正常识别这类文件,也就不能加入进工程,只能我们自己手动双击添加到工程中,如果文件少还无所谓,但是包含了很多子文件夹的大工程,这样实在不可行。
百度了下,终于发现解决办法了:
打开Source Insight,在新建工程之前,进入
Options -> Document Options... Alt-T -> 点击Document Type的下拉框,然后选择Make File,在右边的File Filter中,在原先的*.mak后面加上一个分号,即多个不同过滤规则以分号间隔开,再加上*makefile,变成 *.mak;*makefile,并且选中Include when adding to projects,这样,以后再新建工程的时候,就可以识别makefile或Makefile了(好像此处Source Insight并不区分大小写)。
类似的原理,给其他你想要加入的不同的类型的文件,分别加入到原先的一些文件类型后面,注意要用分号隔开,或者直接新建一个文件类型,然后写上对应的顾虑规则,比如
点击 Add Type,填入新文件类型的名字Scatter File,File Filter中写上*.scf,注意再选中下面的Include when adding to projects,这样就建立了一个新的文件类型, 以后新建工程加入文件时候,系统就能够识别后缀是scf的文件了。
当然感兴趣的,还可以对你新建立的文件类型进行一些格式化设置。包括Parsing,Tab等等设置。
这篇关于linux编程技巧--sourceinsight使用技巧的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!