Source Insight中的正则表达式和快捷键
重画屏幕 : 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)
正则表达式主要用来做搜索和替换,一般强大一点的编辑器都会支持。si在搜索和替换界面里都有Use Regular Expression这样的选项。个人认为使用正则表达式(后简称RE)应该是每个程序员都应该掌握的技能。虽然和vim这些相比si对RE的支持还是弱 一点,但对于从未了解过RE的人来说,从si这样的编辑器来入门RE也不失为一个好的选择。
学习任何一项科学或技术,了解其涉及的各种概念是第一步,也是比较花时间的一步,我们需要先通读达到大概了解,再实践,在实践中去理解,然后再总结,得出自己的结论,把书本变薄。
RE中的主要概念就是一堆通配符。通配符可以分为两类,一种是表内容的,一种是表数量的。
表内容的如:
. 任意字符
[abc] 任何在[]之内的字符
[^abc] 任何不在[]之内的字符,^表示不在[]之内
还有一些就是转义字符了如\t(tab), \s(space), \w(tab or space)
表数量的如:
* 大于等于0个
+ 大于0个,也就是至少有1个
其它如:
^ 表示行起始,注意不要把这个^和[]里的^搞混了。
$ 表示行的结束
要说明的是,不同的工具对RE的支持不太一样,比如强一点的工具支持的通配符可能会多一点,转义字符的定义也可能不一样等等。
举个例子理解一下吧,
.* 这条RE可以匹配任意的字符串序列,因为.表示任意字符,*表示大于等于0个,连起来理解就是“任意个任意字符”,[abc]+ 表示“a或b或c出现1次或多次”,像字符串abc, cbac, aacbcb,aaaaa都被可以匹配
如果还不是很理解可以用si的搜索功能自己实践一下。
在理解上面的基础之上就可以使用RE进行替换了,替换和搜索没有什么不同,比如你可以将"[abc]+"替换成"abc",但如果仅仅是这样就没有什么意思了。替换里和RE相关的内容是分组。与分组有关的概念包括:
1. 一个分组以\(开始,以\)结束
2. 一个RE中可以有多个分组
3. 引用一个分组使用\1, \2, \3, ...
还是举个例子吧,假设我们的代码中有个函数叫func,它的原型定义如下
void func(int var1, int var2)
某天我心血来潮,把func的原型修改成了,
void func(int var2, int var1)
如 果没有RE,这下子可就麻烦了,所有调用func的地方都要手工挨个修改,好在有RE。按下Ctrl+h,选择使用RE进行替换,在Old中输 入"func( \(.*\), \(.*\) )",在New中输入"func( \2, \1)",然后执行,你会发现全部搞定了。
当然 ctrl+h只能在本文件中搜索替换,要想替换整个工程的,可以使用ctrl+shift+h。
Source Insight中的正则表达式
今天看了下面blog的内容后,解决了一个替换问题,如果手工替换则需要很长时间才能完成。
摘至:http://blog.csdn.net/Jupin/archive/2007/10/19/1832536.aspx
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
则完成把它们全部注释掉。
----------------------------------------------------
我的问题是,代码中有下面这样的代码:
#define CLASS(x) class x
这样定义后,就有很多类定义成了下面的样子:
CLASS ( CText )
{
……
}
导致Rose无法反向工程此类,Source Insight等编辑工具也不认识此类。
解决办法:
使用Source Insight中的正则表达式替换功能,把CLASS ( CText )替换成了class CText,替换方法如下:
原始串:
CLASS\s*(\s*\(.+\)\s*)
目标串:
class \1
Tips:
如果要匹配 一个变量test在哪里赋值,test后可能有n个空格;之后有等号,之后又有n个空格
类似于
test = 1;
test = 2;
test = 4;
可用通过test\s+=\s 搜索
转载于:https://my.oschina.net/alphajay/blog/65255
Source Insight中的正则表达式和快捷键相关推荐
- 在source insight 中添加系统字体
在source insight 中添加系统字体 1. "控制面板:--->"字体"--->找到Courier New(建议用这个字体,比Courier要平滑) ...
- 解决 Source Insight中的parse too complex问题
FROM:http://blog.csdn.net/kunbo_1399614213/article/details/46730049 Source Insight 在导入文件后,有个别的文件无法正常 ...
- Source Insight中的多行注释
我们经常要对一整段代码进行注释,很多代码编辑器都提供了这样的功能:用快捷键"Ctrl + /"来实现"//"的多行注释. 但是在用source insight的 ...
- Source Insight中Quicker.em的使用方法
1.安装方法 Source Insight有很多宏可以用,这里介绍的宏是quicker.em这个宏,它是华为的一个员工写的,很实用. 1)安装quicker.em宏 一.打开base这个工程Proje ...
- 工具及方法 - 在Source Insight中使用代码格式化工具
在Source Insight 4.0中,有代码格式化工具: 当你打开某个源文件后,可以对当前文件进行格式修改: 有ANSI.GNU.K&R三种编码风格可以选择. 也可以自己进行设置: 同时, ...
- Source Insight中显示函数调用关系的方法
接上一篇博客,解决了中文注释乱码后,使用Source Insight显示函数调用关系树状图 网上借鉴了一些经验,但感觉可能是版本不同未能完全奏效,下面我将记录我最终探寻出的解决方法 1.双击编辑器中需 ...
- Source Insight中查看文件显示全路径
使用Source insight的时候想看文件的全路径,但是默认的是中间省略的路径,所以可以通过: 1.Options-->Preferences-->Display 设置Trim lon ...
- ubuntu14.04中 gedit 凝视能显示中文,而source insight中显示为乱码的解决的方法
1.乱码显示情况: 2.用gedit打开文件,并用ctrl+shift+s(另存为),当中charactor coding选为chinese simplified(GB2312); 2.改动个文件名称 ...
- Source Insight中无法正确判断宏定义的问题
Source Insight阅读C语言项目,会出现#ifdef无法正确判断宏定义值导致无法正确跳转到#else的问题,因为软件本身只能识别TRUE和FALSE,解决方法是右键该宏定义选择"E ...
- source insight快捷键及使用技巧
2019独角兽企业重金招聘Python工程师标准>>> 原文转自http://lucjn.blog.163.com/blog/static/925911520091116843548 ...
最新文章
- Linux(64位)下OpenBabel 2.4.1、python2.7和Ipython实战(一)
- 揭秘深度学习成功的数学原因:从全局最优性到学习表征不变性
- nagios监控安装
- linux gcc 宏定义 __GNUC__ __GNUC_MINOR__ 版本区分
- 摩托罗拉能否追回逝去的那些年?
- C 中 static 的常见作用
- 不插网线 开机速度加快
- netty解决方法 io.netty.util.IllegalReferenceCountException: refCnt: 0, increment: 1
- LayaAir 文本 Text API 详解
- java socket 客户端接收_java socket,怎么把客户端接收到的用户名和密码发送给后台?...
- 简单的JAVA小程序
- 6个高效学习编程的方法
- 我爱淘冲刺阶段站立会议2每天任务2
- java虚无世界_我的世界1.7.10工业虚无整合包
- 百战c++(数据库2)
- Python案例1—人民币与美元的汇率兑换V_3.0
- YOLO工程代码如何在windows上配置和运行!window上YOLO训练样本的制作
- PS 运行错误代码: 16 的解决方法
- vim中显示和关闭行号
- php 第三方认证中心 框架,仿百度钱包源码红色优享钱包网贷借款源码/接入第三方认证,去后门修复缺陷ThinkPHP开发...
热门文章
- System Center Configuration Manager 文档
- 在TabActivity中无法使用bindService的解决方法
- 清空SQL数据库日志
- sencha touch 2中list控件分组排序
- Elasticsearch 7.9.3 发布
- SQL server无法打开项 UNKNOWN\Components\929B2416EC4102B48A989956983ACF45\1F7B2B09C788E7644A0F08CA9C1D解决办法
- win10系统eclipse中整合hadoop错误
- linux平台上不同类型的压缩文件的压缩与解压
- 广东技能大赛软件测试项目,我校喜获2019年全国职业院校技能大赛软件测试赛项二等奖...
- 六石管理学:半弹性工作时间