Source Insight中的正则表达式和快捷键

source insight 快捷键
2007-03-31 22:50
退出程序                                : 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)
 
 
 
http://blog.csdn.net/ison81/archive/2008/12/14/3514184.aspx

正则表达式主要用来做搜索和替换,一般强大一点的编辑器都会支持。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 搜索


你可能感兴趣的:(Source Insight中的正则表达式和快捷键)