如果你觉得这网页排版不好看,可以去下载我上传的word版:《烤鸭的Source Insight学习笔记.doc》 http://download.csdn.NET/detail/benkaoya/4888311
1.前言
写这份文档时,我用的SI版本是:Version 3.5。
2.常用设置
2.1.缩进
Options菜单DocumentOptions选择合适的文件类型点击右边中间的Auto Indent钮在弹出的框中,左边选中点Simple。这样在输入函数回车后"{"不会缩进,而是和函数名称对齐。
2.2.TAB与空格
Options菜单DocumentOptions Editing Options框中,tab width= 4 EditingOptions框中,勾选Expand tabs(这样,按tab键、等价于输入4个空格)在严格的编码规范中不可以使用Tab,要使用空格。这个是节省工作的符合编码规范的好方法。
2.3.可视化制表符和空格导致乱码
Options > Document Options对话框中同时勾选了“VisiableTabs”和“Visiable spaces”两个选项,会导致tab和空格字符乱码
2.4.中文注释间有空格
用Source Install写代码的时候,中文注释的每个汉字间都会有一个空格,这样看起来相当的不习惯。打开options->styleproperties对话框,找到如下style:
comment
…
commentTo Do
里面的font->font name设置为“Fixedsys”或其它中文字体就可以了。
2.5.等宽字体的调整
Source Insight 菜单栏选择Options->DocumentOptions(或者直接Alt+T),打开DocumentOptions对话框,点击Screen Fonts,在新打开的字体对话框中设置为Fixedsys就OK啦。
Alt+F12可以将视图切换至草稿视图风格(draft view),可以有不同的视觉效果,试试吧。
2.6.不支持UTF-8
让我疑惑的是,广受欢迎的Source insight竟然不支持UTF-8,导致很多中文会显示乱码。转为ANSI格式即可正常显示。可以用记事本打开源代码,再另存为ANSI格式的文件来进行转化。
2.7.Options->Perferences菜单配置
2.7.1.General
把Misc->Use stricterconfirmation dialog选项去掉可以使确认时不输入"yes"。
2.7.2.Typing
Auto Completion->Use detailedcompletion window,选上后,联想时可以出现该函数的详细信息。如下图所示:
图表2‑1 Typing
2.7.3.Display
Show exact caseof file names。如果看不惯si把所有的文件名首字母都大写就勾上这个选项吧。
Trim long pathnames with ellipses。这个建议不要选中。事实上这个主要影响标题栏,但一般来说标题栏上的空间是充裕的,选上之后往往会令我们不知道所编辑文件的具体位置。
2.7.4.SyntaxFormatting
Basics->Useonly color formatting,个人还是习惯勾选这个,效果比较好。
3.SI宏
本章节介绍的宏文件,可以到我在CSDN上传的资源《Source Insight宏库.rar》去下载:http://download.csdn.Net/detail/benkaoya/4888265
3.1.使用宏
这里举个例子。首先要有宏文件(如SuperBackspace.em),至于宏的基础知识不在本文讨论范围内。文件中有个宏Marco: SuperBackspace,该宏的作用是在删除中文时,增加了对双字节汉字的支持,我们要将该宏绑定到BackSpace键。那操作步骤如下:
① 将文件SuperBackspace.em复制入SourceInsight安装目录;
② 打开SI,选择菜单 Project→Open Project,打开Base项目(Base项目是SI安装是就有的);
③ 将复制过去的SuperBackspace.em添加入Base项目;
④ 重启SourceInsight;(不重启好像看不到宏Marco: SuperBackspace)
⑤ 选择菜单Options→Key Assignments,将Marco:SuperBackspace绑定到BackSpace键;
3.2.官方宏库
http://www.sourceinsight.com/public/macros/
这里有很多例子值得学习。
3.3.我的宏库
宏文件(*.em) |
宏名 |
我的快捷键/菜单 |
功能描述 |
CompleteWord.em |
Macro: CompleteWord |
Alt+E |
字符补全功能(虽然SI在你输入时,能列出一个可选列表,但往往很多词他没法列出),这个宏非常好用。 |
AutoExpand.em |
Macro: AutoExpand |
Ctrl+Q |
◆C语句自动扩展,如输入if后按快捷键Ctrl+Q即可实现自动扩展。 可支持有:for、while、do、switch、#if、#ifndef、#ifdef、{等 ◆文件头注释块、函数头注释块模板自动扩展。输入/*或者/**按快捷键; ◆头文件要写防止重复编译的预编译处理时,可以输入#ifndefh,按快捷键自动完成。 |
Switch_cpp_hpp.em |
Macro: switch_cpp_hpp |
Alt+O |
在同名的cpp和h文件之间切换 |
Home.em |
Macro: Home Macro: ShiftHome |
Home Shift+Home |
SI自带快捷键Shif+Home的Navigation: Select To Start Of Line会把行首的空白字符也选进来。我还是更习惯于把行首非空白字符作为第一个字符。同样的Home是也如此 |
ChineseCharacters.em |
Macro: SuperBackspace |
绑定到 BackSpace |
使SI对中文按一个字符操作(如删除,左右移),但鼠标拖动选中中文还是会出现乱码。 |
Macro: SuperDelete |
绑定到 Del |
||
Macro: SuperCursorLeft |
绑定到 Left |
||
Macro: SuperCursorRight |
绑定到 Right |
||
Macro: SuperShiftCursorLeft |
绑定到Shift+Left |
||
Macro: SuperShiftCursorRight |
绑定到Shift+Right |
说明:
◆CompleteWord.em
字符补全的关键字所在文件要处于打开的状态,否则无效。按以下顺序查找关键字:
① 光标位置向上搜索(当前文件)
② 光标位置向下搜索(当前文件)
③ 其他文件从开始位置搜索
CompleteWord按以上顺序搜索显示,CompleteWordBack则在CompleteWord搜索出来列表的基础上反方向显示。
4.常用快捷键
默认快捷键 |
我的快捷键 |
说明 |
Ctrl + L Click (select) |
Symbol: Jump To Definition |
|
Ctrl + R Click (select) |
Symbol: Symbol Info... |
|
F3 |
向后搜索 |
|
F4 |
向前搜索 |
|
F5 Ctrl + g |
Go to line |
|
F12 |
向前搜索,到文件尾后会回到文件头 |
|
Shift+F3 |
向后搜索当前光标所处的字符串; 无须调出搜索对话框,而且使用过后就能用F3、F4、F12了 |
|
Shfit+F4 |
类似Shift+F3,只是向前搜索而已 |
|
Ctrl + m |
Bookmark |
|
Ctrl + home |
Top of File |
|
Ctrl + End |
Bottom of File |
|
Ctrl+9 |
跳至圆括号左边 |
|
Ctrl+0 |
跳至圆括号右边 |
|
Ctrl+Shift+{ |
跳至当前代码块所在的{, 鼠标可以置于{}块中的任一位置 |
|
Ctrl+Shift+} |
跳至当前代码块所在的}, 鼠标可以置于{}块中的任一位置 |
|
单击编辑窗口左边选择栏 Shift+F6 |
选择整行 |
|
双击编辑窗口左边选择栏 |
Select the whole enclosing symbol definition. 相当于双击symblo窗口中的symblo选中整个symblo, 可用于全选整个函数、整个结构体,以及其他类型的symblo |
|
Ctrl + 单击编辑窗口左边的选择栏 |
全选(整个文件) |
|
Ctrl + - (不能用小键盘的-号) |
选择大括号、圆括号内的内容 鼠标可以置于匹配范围内任一地方 |
|
在匹配符前面,双击或者Alt+= |
即可选中{}、()、<>、[]、“”匹配范围; 注意:鼠标一定要放在以上符号前面执行动作 |
|
Alt+] |
跳至匹配的字符{}、()、<>、[]; 注意:SI默认的命令Jump To Match要求鼠标一定要放在以上符号前面执行动作 |
|
Shift+Tab |
Back Tab |
|
Ctrl+S |
File: Save |
|
Ctrl+A |
File: Save All |
|
Alt + (KeyPad) + |
Navigation: Go To Next Change |
|
Alt + (KeyPad) - |
Navigation: Go To Previous Change |
|
Alt + L Click |
Navigation: Make Column Selection |
|
Shift+F1 |
Windows: Select Previous Window |
|
Shift+F2 |
Windows: Select Next Window |
|
Shift+F8 |
View: Highlight Word |
|
Ctrl+Tab |
Windows: Last Window |
|
Ctrl+Shift+] |
到块的下面 |
|
Ctrl+Shift+[ |
到块的上面 |
|
|
5.CustomCommands
5.1.自定义命令
自定义命令可以让你很容易的执行外部shell批处理程序或者window程序,自定义一个命令后,你可以给该命令定义一个快捷键或者一个菜单项,以方便调用。自定义命令的完整步骤如下:
◆Source Insight菜单Options->CustomCommands...在弹出的Custom Commands对话框中点击Add按钮新建一个自定义命令(名称自己随便取个,如Editwith UE);
◆添加完新命令后,回到Custom Commands对话框界面,在Run编辑框中输入完整的命令,包括应用程序路径,程序条用的参数,如:"C:\Program Files\UltraEdit-32/uedit32" %f(意思是:在ultriEdit中编辑SI当前文件)。可以点击Run按钮来试运行下效果。
◆你还可以按Menu或Keys按钮来给刚自定义的命令关联一个菜单或者快捷键。
图表5‑1 Custom Commands
5.2.我的自定义命令
以下几个自定义命令我把他们关联到了菜单。
自定义的菜单名 |
功能 |
Run编辑框内容 |
Explore File |
打开资源管理器并选中当前文件 |
ShellExecute open explorer /e,/select,%f |
Edit with UE |
在ultriEdit中编辑 |
"C:\Program Files\UltraEdit-32/uedit32" %f |
Edit with VIM |
在vim中编辑并定位到当前行 |
"C:\Program Files\Vim\vim63\gvim.exe" --remote-silent +%l %f |
AStyle_C |
格式化当前文件(后面章节会介绍) |
"C:\AStyle\bin\AStyle.exe" --options="C:\AStyle\bin\c.opt" %f |
Trim Whitespace |
删除整个文件每行行末尾的空白字符 |
这个是从Edit: Trim Whitespace从加进来的,是SI自带的功能,只是没有放到菜单上来而已。 |
关于这些%f、%l等参数什么意思,这是SI的通配符,可以搜索下SI帮助文档“Command Line Substitutions”章节,里面有详细的介绍。我这里列举几个:
Character |
Expands to |
Example |
%f |
full path name of the current file * |
c:\myproj\file.c |
%r |
path name of current file relative to the project source directory * |
file.c |
%n |
leaf name of the current file * |
file.c |
%d |
directory path of the current file |
c:\myproj |
%h |
directory path of current file without the drive letter |
\myproj |
%b |
leaf name of current file w/o extension * |
file |
%e |
extension of the current file |
c |
%c |
drive letter of the current file |
c: |
%p |
the current project name |
c:\myproj\myproj |
%j |
the source directory of the current project |
c:\myproj |
%J |
the data directory of the current project |
C:\Documents and Settings\Jim Smith\My Documents\Source Insight\Projects\Base |
%v |
the drive letter of the current project’s source directory |
c: |
%o |
leaf name of the project without path |
myproj |
%l |
the current line number |
any number |
%w |
first word in the selection, or the word under the cursor |
any word |
%s |
name of a temp file where the current selection is saved while the custom command runs. |
d:\tmp\vt0004. |
%a |
the current date |
2005-12-2 |
%t |
the current time |
8:23 |
%1 - %9 |
user is prompted for arguments |
any strings |
6.代码格式化
Source Insight本身没有对代码进行格式化的功能,如果将Artistic Style集成到SourceInsight中,那就可以为它扩展出代码格式化的功能了。
很可惜的是:SI只能格式化整个文件,我还没找到可以格式化部分选中行的方法。如果有谁知道了,请告知我下。
6.1.AStyle下载路径
AStyle为开源项目,支持C/C++、C#、Java的代码格式化
Home Page: http://astyle.sourceforge.net/
Project Page: http://sourceforge.net/projects/astyle/
下载最新Windows版本的AStyle,解压到C盘根目录,如C:\AStyle\bin\AStyle.exe
6.2.自定义命令集成Astyle工具
添加新的自定义命令Astyle_C,参数设置为:
“C:\AStyle\bin\AStyle.exe” --style=Linux -s4 -S -N -L -m0 -M40 --suffix=none --convert-tabs %f |
你还可以把AStyle定制的选项放在一个配置文件里:
“C:\AStyle\bin\AStyle.exe” --options=”C:\AStyle\bin\c.opt” %f |
配置文件C:\AStyle\bin\c.opt文件的内容大致如下:
#大括号的样式 --style=ansi
#缩进样式(用tab还是space) --indent=tab=4
#有的if语句没有{},自动补全 --add-brackets
#定义指针变量时,*号紧贴变量名 --align-pointer=name |
这里只是做个简介,详细的参数说明可以看AStyle安装目录的帮助文档,如C:\AStyle\doc\index.html,或者看在线帮助文档:http://astyle.sourceforge.net/astyle.html
6.3.其他工具
也可以用其他格式化工具,可以选自己喜欢的用。比如:
工具 |
官网 |
indent |
http://www.gnu.org/software/indent/ http://mirror.bjtu.edu.cn/gnu/indent/ [for windows] http://gnuwin32.sourceforge.net/packages/indent.htm |
uncrustify |
http://sourceforge.net/projects/uncrustify/files/ |
7.插件
7.1.TabSiPlus
作者博客 :http://blog.csdn.net/orbit/article/details/7702472
下载地址1:http://www.winmsg.com/download/TabSiPlus_0_99b2_1749.rar
下载地址2:http://www.winmsg.com/download/TabSiPlus_0_99b2_1510.rar
这是个文件标签的插件,蛮好用的,谁用谁知道。效果如下图所示:
图表7‑1 TabSiPlus效果图
8.其他
8.1.ProjectWindow
比如要快速查找autoexp.em文件,可以在编辑框中输入*.em回车。如果要再次显示全部文件,输入**回车。如果你要查看非项目里的文件输入点‘.’回车。
烤鸭的Source Insight学习笔记的更多相关文章
-
【Source Insight 】之marco学习笔记1
我们学习编程语言都是从Hello World!,现在我们学习marco也不例外 打开C:\Users\%USERPROFILE%\Documents\Source Insight 4.0\Projec ...
-
Nginx学习笔记4 源码分析
Nginx学习笔记(四) 源码分析 源码分析 在茫茫的源码中,看到了几个好像挺熟悉的名字(socket/UDP/shmem).那就来看看这个文件吧!从简单的开始~~~ src/os/unix/Ngx_ ...
-
delphi操作xml学习笔记 之一 入门必读
Delphi 对XML的支持---TXMLDocument类 Delphi7 支持对XML文档的操作,可以通过TXMLDocument类来实现对XML文档的读写.可以利用TXMLDocum ...
-
Hadoop学习笔记—22.Hadoop2.x环境搭建与配置
自从2015年花了2个多月时间把Hadoop1.x的学习教程学习了一遍,对Hadoop这个神奇的小象有了一个初步的了解,还对每次学习的内容进行了总结,也形成了我的一个博文系列<Hadoop学习笔 ...
-
0035 Java学习笔记-注解
什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...
-
redis 学习笔记(6)-cluster集群搭建
上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...
-
bootstrap学习笔记--bootstrap安装环境
Bootstrap 安装是非常容易的.此文是本人的学习汇总,便于以后查询学习,同时也希望给大家带来帮助. 下载 Bootstrap 您可以从 http://getbootstrap.com/ 上下载 ...
-
WeX5学习笔记
目录 WeX5学习笔记... 1 1.轻松看透WeX5产品能力和技术... 1 2.WeX5可以怎么玩?... 3 一.纯本地App. 3 二.关联一个网站,希望默认就打开某页... 4 三.UI设计 ...
-
OpenCV学习笔记(一)——OpenCV3.1.0+VS2015开发环境配置
摘要: 由于最近AR(增强现实)这个概念非常火爆,各种基于AR的应用及游戏逐渐面向大众,而在AR中最重要的两个技术就是跟踪识别和增强渲染,其中跟踪识别是通过OpenCV这个开源的计算机视觉库来实现的, ...
随机推荐
-
小菜学习设计模式(一)—模板方法(Template)模式
前言 设计模式目录: 小菜学习设计模式(一)—模板方法(Template)模式 小菜学习设计模式(二)—单例(Singleton)模式 小菜学习设计模式(三)—工厂方法(Factory Method) ...
-
Linux(Ubuntu 14.04) setting up OpenGL
1. Install c/c++ compilation package. 2. install openGL and freeGlut library sudo apt-get install me ...
-
mysql解决自动断开8小时未曾用过的链接
今天有运维的同事反映,发布关键词不太稳定,点了没反应.就去线上看了一下日志,发现数据库没有链接,就查了一下问题 关于mysql自动断开的问题研究结果如下,在mysql中有相关参数设定,当数据库连接空闲 ...
-
1051: [HAOI2006]受欢迎的牛
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2276 Solved: 1190[Submit][Sta ...
-
Seasar2框架:AOP
Seasar2是由日本人开发的一个框架.它通过自己定义的规约,很大程度上地减少了设定代码.但是由于这个原因,导致了框架学习初期会有比较大的跨越. AOP例子: Greeting.java packag ...
-
JTree实例
JTree实例 private void createTreeByXdDdt() { DefaultComboBoxModel boxModel = (DefaultComboBoxModel) cm ...
-
STL的容器算法迭代器的设计理念
1) STL的容器通过类模板技术,实现数据类型和容器模型的分离. 2) STL的迭代器技术实现了遍历容器的统一方法:也为STL的算法提供了统一性. 3) STL的函数对象实现了自定义数据类型的算法运算 ...
-
为harbor部署swagger-ui
有了swagger,所有REST API就一览无余了. Harbor官方已经准备好了部署脚本,部署起来其实特别简单,这里仅作记录. 1.下载部署脚本和swagger文件到本地harbor目录. # c ...
-
JS继承封装
<script> var extend = function (subClass, superClass) { //1.继承类的中间类 var Tmp = function() {}; / ...
-
算法笔记_143:构造无向图的欧拉回路(Java)
目录 1 问题描述 2 解决方案 1 问题描述 具体链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Item ...