[转载]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符号索引打开很好很强大,快速定位一个函数或者变量。

 

 通过上面的设置close对话框后就可以了。

 

其他技巧:
1)列操作
虽然开篇时就说过,SI的列操作功能比较弱,但不等于没有。先按下Alt键,接着就可用鼠标进行列选择,然后就可以删除指定的列


2)
Shift+F8
高亮显示指定标识,快速浏览标识的使用情况。


3)
Smart Rename
在上下文件菜单中选Smart Rename或按Ctrl+'组合键,即可弹出Smart Rename窗口。它有很强大的功能,但最便捷的使用方式是更改函数内局部变量的名字,操作只作用于函数内部,速度非常快。


4)
Edit Condition
很多代码尤其是驱动代码,当中有大量的预编译定义,以实现对不同硬件配置的支持。在阅读这样的代码时最痛苦的是不能简单判断程序实际执行的代码分枝。大量分枝同时存在,常常会混淆我们的视听。比如对于下面的代码: 
    #ifdef DEV1        /* DEV1代码代码 */    #else        /* 其它设备执行代码 */    #endif如果确定我们当前分析的是DEV1的执行情况 5,那么可以选择上下文件菜单的Edit Condition 选项,在弹出的Conditional Parsing窗口中把DEV1的值设置为True,那么 #ifdef DEV1就等价于#if 1了,相当注释掉了#else分枝的代码。反之,设置为Flase时,则注释掉#ifdef DEV1分枝的代码。


【问题】
Source Insight里输入中文,字间距相当的大。
【答案】
1.Options->Style Properties
2. 在左边Style Name下找到Comment Multi Line和Comment.在其右边对应的Font属性框下的Font Name中选“Pick...” 设置为宋体、常规、小四。确定,退回Style Properties界面,Size设为10。最后设置Clolors框下Foreground,点“Pick...”选择一种自己喜欢的颜色就OK了。
3.Done

【问题】
删除半个汉字
【答案】
① 复制入SourceInsight安装目录;
② Project→Open Project,打开Base项目;
③ 将复制过去的SuperBackspace.em添加入Base项目;
④ 重启SourceInsight;
⑤ Options→Key Assignments,将Marco: SuperBackspace绑定到BackSpace键;
⑥ Enjoy!!

【问题】
让{ 和 } 不缩进
【答案】
options->document options->auto indent 去掉indent Open Brace和Indent Close Brace。

【问题】
字符大小不一
【答案】
选上"view --> draft view", 就可以让每个字符的宽度一致了。快捷键是 "Alt F12"

【问题】
背景颜色
【答案】
背景色Options->preference->color->windows background设置背景色

【问题】
高亮选中的字
【答案】
"shift F8" 标亮所有文本中光标所在位置的单词

【问题】
跳到指定行
【答案】
跳到某一行:"ctrl g"  或者"F5"

【问题】
括号匹配
【答案】
双击其中一个括号就能全选这个括号的匹配内容


===================source insight 快捷键大全====================================
剪切一个字                            : Ctrl ,
剪切行                   :Ctrl U
复制一行                                : Ctrl K
剪切该位置右边的该行的字符              : Ctrl ;
激活语法窗口                         : Alt L
激活工程文件窗口                         : Alt R(自定义的)

退出程序                                : Alt F4
重画屏幕                                : Ctrl Alt Space
完成语法                                : Ctrl E

恰好复制该位置右边的该行的字符          : Ctrl Shift K
复制到剪贴板                         : Ctrl Del
剪切一行                                : Ctrl U

剪切到剪贴板                         : Ctrl Shift X

左边缩进                                : 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

回到该行的开始                      : 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


===================SuperBackspace.em============================================

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;
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值