在windows下开发linux程序,使用vc2005有点大材小用,用linux下的vim吧,又有很多的记忆负担。
那就用sourceinsight吧。
文件目录树怎么切换磁盘?
直接在文件搜索栏里面输入D: 就会切换到D:盘。
0) 跳转的函数定义处
ctrl + =
跳转到函数原型: ???
1){}符号的自动缩进。换行时,默认是 在上一行左端向右缩进一个tab,但我想让对齐,怎么办?
新开一个PROJECT后,点Options->Document Options,弹出对话框后先在左上角选好要用的Document Type,主要就是设C Source File和C++ Source File,选好后点右边中间的Auto Indent调整缩进。单选里一定要点Smart,右边有两个复选框Indent Open Brace和Indent Close Brace,具体效果是如何的可以看SIS的HELP。
勾选Auto Indent和SMART的效果: 在C程序里, 如果遇到行末没有分号的语句,如IF, WHILE, SWITCH等, 写到该行末按回车,则新行自动相对上一行缩进四列.
勾掉indent Open Brace和Indent Close Brace的效果: 继上一段,在相对缩进行里, 如果输入"{"或"}", 则自动和上一行列对齐。
参考:http://blog.csdn.net/yjzl1911/archive/2010/06/13/5669037.aspx
2)跳转到最近编辑过的地方 有点像 vc2005的 ctrl+<- 和 ctrl+->.
si的跳转快捷键是:alt+,alt+. 分别是 alt+逗号和 alt+句号!
3) 跳到指定行 ctrl+g, 这和vc2005一致
4) F3向上搜索,F4向下搜索
shift+F4: 快速搜索. 不用调出搜索界面,双击关键字选择关键字即可搜索.
5) 快速注释/取消注释代码段
好像没有内置这样的功能,使用 #if 0 #endif 吧
6) 如何开一个函数 的左大括号 { 跳转到函数结束的 右大括号位置 }
vc2005 我记得是 直接 输入 ctrl+}就会在两个{}之间来回跳转
到块的下面 : Ctrl+Shift+]
到块的上面 : Ctrl+Shift+[
另外,si双击{会选中函数的全部内容
7)检查引用 : Ctrl+/
这个功能非常有用哦,就像vc2005里面的查找所有引用
8)列操作
虽然开篇时就说过,SI的列操作功能比较弱,但不等于没有。先按下Alt键,接着就可用鼠标进行列选择,然后就可以删除指定的列
9)
Shift+F8
高亮显示指定标识,快速浏览标识的使用情况。
10)
项目-项目设置-选中在数据库中存储局部函数符号。 不管那么多,选中即可。
选项-参数设置-符号查找-项目符号路径-添加项目到路径。可以把之前建立好的linux内核头文件项目加到这里的符号路径, 这样你写代码是,比如 str 会自动提示 strcmp strcpy等等东西, 而且可以直接看到函数原型,功能一点不次于vc2005!
11) 让source insight 显示文件的全路径
写代码时,实时的知道当前编辑的文件是硬盘上的哪个文件时非常有必要的,不然万一编辑错了怎么办?特别是在有同名文件的时候. 这点vc2005就非常好,在标签上右键就可以打开文件位置.
si也可以满足你. 只是不能打开文件位置.
选项-参数设置-显示, 取消选中 "用省略号修剪长路径名"(该选项出现在倒数第二行).
12) 如何更高效的使用查找引用, 切换到下一个引用,上一个引用?
当使用查找引用功能时,会弹出一个查找结果页面,页面的左侧有个小按钮,可以调到引用的实际位置。但是每次看完一个要回来才能看下一个很不方便,其实,在工具栏上有两个小按钮,可以跳到下一个引用和上一个引用。并且 Alt+F9 可以直接跳转到下一个。
另外,查找引用的时候,还是用“简单字符串”模式查找比较靠谱吧,速度慢点,我用另外一个默认总是找到漏掉几个,不爽!
13)
关于删掉半个汉字的问题
网上流传一个 * 猪 哥 作 品可以解决该问题,方法如下:
a)记事本编辑另存为:SuperBackspace.em 即可。
b) 由于我的si是绿色的,没有Base项目, 只有自己在 D:/我的文档/Source Insight/Projects/Base 路径下新建一个 Base项目。
c)将SuperBackspace.em 加入到当前base项目中来。
方法如下:
c.1)选项-文档选项-解析-语言-SI Macro Language, 然后选择上面 文档类型-Source Insight 宏文件, 文件过滤器里面是 *.EM
c.2)然后找到 superasespace.em添加进来。 确保在右侧的文件列表里可以看到
d)重启SI
e)添加键映射,选项-键关联-在左侧的列表里找到 “宏:SuperBackspace”, 点击分配新建,按键盘的 Backspace键,击键出出现 Backspace。ok
f)试试删除半个汉字是否ok了?
/**
* ╭︿︿︿╮
* {/ . ./}
* ( (oo) )
* ︶︶︶︶
* 猪 哥 作 品
*
* 2006 丁兆杰 Ding Zhaojie
* [email protected]
*
* SuperBackspace Version 0.1beta
*
* 代替SourceInsight原有的Backspace功能(希望如此)
* 增加了对双字节汉字的支持,在删除汉字的时候也能同时删除汉字的高字节而缓解半个汉字问题
* 能够对光标在汉字中间的情况进行自动修正
*
* 安装:
* ① 复制入SourceInsight安装目录;
* ② Project→Open Project,打开Base项目;
* ③ 将复制过去的SuperBackspace.em添加入Base项目;
* ④ 重启SourceInsight;
* ⑤ Options→Key Assignments,将Marco: SuperBackspace绑定到BackSpace键;
* ⑥ Enjoy!!
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
macro SuperBackspace()
{
hwnd = GetCurrentWnd();
hbuf = GetCurrentBuf();
if (hbuf == 0)
stop; // empty buffer
// get current cursor postion
ipos = GetWndSelIchFirst(hwnd);
// get current line number
ln = GetBufLnCur(hbuf);
if ((GetBufSelText(hbuf) != "") || (GetWndSelLnFirst(hwnd) != GetWndSelLnLast(hwnd))) {
// sth. was selected, del selection
SetBufSelText(hbuf, " "); // stupid & buggy sourceinsight :(
// del the " "
SuperBackspace(1);
stop;
}
// copy current line
text = GetBufLine(hbuf, ln);
// get string length
len = strlen(text);
// if the cursor is at the start of line, combine with prev line
if (ipos == 0 || len == 0) {
if (ln <= 0)
stop; // top of file
ln = ln - 1; // do not use "ln--" for compatibility with older versions
prevline = GetBufLine(hbuf, ln);
prevlen = strlen(prevline);
// combine two lines
text = cat(prevline, text);
// del two lines
DelBufLine(hbuf, ln);
DelBufLine(hbuf, ln);
// insert the combined one
InsBufLine(hbuf, ln, text);
// set the cursor position
SetBufIns(hbuf, ln, prevlen);
stop;
}
num = 1; // del one char
if (ipos >= 1) {
// process Chinese character
i = ipos;
count = 0;
while (AsciiFromChar(text[i - 1]) >= 160) {
i = i - 1;
count = count + 1;
if (i == 0)
break;
}
if (count > 0) {
// I think it might be a two-byte character
num = 2;
// This idiot does not support mod and bitwise operators
if ((count / 2 * 2 != count) && (ipos < len))
ipos = ipos + 1; // adjust cursor position
}
}
// keeping safe
if (ipos - num < 0)
num = ipos;
// del char(s)
text = cat(strmid(text, 0, ipos - num), strmid(text, ipos, len));
DelBufLine(hbuf, ln);
InsBufLine(hbuf, ln, text);
SetBufIns(hbuf, ln, ipos - num);
stop;
}
xx)
本来以为自己对source Insight的使用还算熟练的,结果发现它还支持这么多先进的以前没玩过,或者以为它实现不了的功能。非常棒!!
关于sourceInsight3.5的缩进问题和库函数补全问题。
由于vc自动缩进很智能,而且编写库函数能自动提示补全函数名并提示参数组成,很方便。
今天研究得出SourceInsight3.5也可以实现这两个效果。
1. Preferences->Symbols Lookups:Add Project to Path... 选择"D:/Program Files/Microsoft Visual Studio6.0/VC98/Include后它默认取名为CStandard.PR,点加入所有头文件确定后就可以看到Project symbol path:下面的文本框里面多了一个字符串"D:/Program Files/Microsoft Visual Studio6.0/VC98/Include/CStandard.PR",这样点确定后,以后所有的工程都可以自动补全库函数和看到库函数的原型了。
2. Alt+T打开Document Options对话框,如果你是c++代码,那么选择c++类型,file filter下面输入框下面的两个复选框第一个Use options from Default type不要选中,一定不要选,要不indent调不对的,Editing Options下面的复选框选上:Allow auto-complete自动补齐功能,少打几个字而且补齐的可以避免不必要的输入错误,Expand tabs把tabs变换成空格,不同编辑器打开都统一了不会乱,Enter Key->new line回车建立新行,show line numbers显示行号看到代码很方便的,show right margin编写代码时候可以提醒自己不要一行不要太长及时换行,symbol window符号索引打开很好很强大,快速定位一个函数或者变量。
更多快捷键信息参考:
source insight快捷键及使用技巧
http://blog.csdn.net/hbd1986/archive/2010/01/27/5260727.aspx