Source Insight常用快捷鍵及註釋快捷鍵設置

在使用SI過程中,我根據自己的使用習慣修改了它的默認快捷鍵,並且在配置文件中添加了一些人性化功能,下面一一介紹:

 修改快捷鍵:Options->Key Assignments...

1.main window:Esc       2.Hight light:Middle Mouse

3.Go Back:Alt+z              4.Go Forward:Alt+x               

5.Caller:Alt+c                  6.Reference:Alt+r

7.Previous Link:Alt+a    8.Next Link:Alt+s

9.First Link:Alt+d           

10.Go Line:Alt+g           11.Select Line:Alt+l

12.Symbol Win:Alt+q    13.Activate SW:Alt+w

14.Projcet Win:Alt+[       15.Activate PW:Alt+]

16.Contex Win:Alt+,     17.Activate CW:Alt+.

18.Relation Win:Alt+;   19.Activate RW:Alt+'

20.Select All:Ctrl+a          21.Save All:Ctrl+Shift+a

22.Browse Project Symbols:Alt+b


添加一些配置文件宏,比如:註釋掉代碼:單行註釋、多行註釋,將選中內容註釋掉;在一行代碼的前、後添加註釋性文字等。

打開Projcet->Open project,選擇base,可以看到utils.em文件,將下列宏添加到該文件中,並在其他工程里加入該文件,

在上面介紹的快捷鍵添加方式裏找到該宏並自定義快捷鍵。

單行、多行註釋:

  1. macro MultiLineComment()  
  2. {  
  3.     hwnd = GetCurrentWnd()  
  4.     selection = GetWndSel(hwnd)  
  5.     LnFirst = GetWndSelLnFirst(hwnd)      //取首行行號  
  6.     LnLast = GetWndSelLnLast(hwnd)      //取末行行號  
  7.     hbuf = GetCurrentBuf()  
  8.    
  9.     if(GetBufLine(hbuf, 0) == "//magic-number:tph85666031"){  
  10.         stop  
  11.     }  
  12.    
  13.     Ln = Lnfirst  
  14.     buf = GetBufLine(hbuf, Ln)  
  15.     len = strlen(buf)  
  16.    
  17.     while(Ln <= Lnlast) {  
  18.         buf = GetBufLine(hbuf, Ln)  //取Ln對應的行  
  19.         if(buf == ""){                    //跳過空行  
  20.             Ln = Ln + 1  
  21.             continue  
  22.         }  
  23.    
  24.         if(StrMid(buf, 0, 1) == "/") {       //需要取消註釋,防止只有單字符的行  
  25.             if(StrMid(buf, 1, 2) == "/"){  
  26.                 PutBufLine(hbuf, Ln, StrMid(buf, 2, Strlen(buf)))  
  27.             }  
  28.         }  
  29.    
  30.         if(StrMid(buf,0,1) != "/"){          //需要添加註釋  
  31.             PutBufLine(hbuf, Ln, Cat("//", buf))  
  32.         }  
  33.         Ln = Ln + 1  
  34.     }  
  35.    
  36.     SetWndSel(hwnd, selection)  
  37. }  
macro MultiLineComment()
{
    hwnd = GetCurrentWnd()
    selection = GetWndSel(hwnd)
    LnFirst = GetWndSelLnFirst(hwnd)      //取首行行號
    LnLast = GetWndSelLnLast(hwnd)      //取末行行號
    hbuf = GetCurrentBuf()
 
    if(GetBufLine(hbuf, 0) == "//magic-number:tph85666031"){
        stop
    }
 
    Ln = Lnfirst
    buf = GetBufLine(hbuf, Ln)
    len = strlen(buf)
 
    while(Ln <= Lnlast) {
        buf = GetBufLine(hbuf, Ln)  //取Ln對應的行
        if(buf == ""){                    //跳過空行
            Ln = Ln + 1
            continue
        }
 
        if(StrMid(buf, 0, 1) == "/") {       //需要取消註釋,防止只有單字符的行
            if(StrMid(buf, 1, 2) == "/"){
                PutBufLine(hbuf, Ln, StrMid(buf, 2, Strlen(buf)))
            }
        }
 
        if(StrMid(buf,0,1) != "/"){          //需要添加註釋
            PutBufLine(hbuf, Ln, Cat("//", buf))
        }
        Ln = Ln + 1
    }
 
    SetWndSel(hwnd, selection)
}

將上面的代碼保存到utils.em文件,打開source insight,將該文件添加到工程中,然後在Options->Key Assignments中你就可以看到這個宏了,宏的名字是MultiLineComments,然後我們爲它分配快捷鍵“Ctrl + /”,然後就可以了。

這是一份添加“#ifdef 0”和“#endif”的宏代碼,定義快捷鍵爲Ctrl+#

  1. macro AddMacroComment()  
  2. {  
  3.     hwnd=GetCurrentWnd()  
  4.     sel=GetWndSel(hwnd)  
  5.     lnFirst=GetWndSelLnFirst(hwnd)  
  6.     lnLast=GetWndSelLnLast(hwnd)  
  7.     hbuf=GetCurrentBuf()  
  8.    
  9.     if(LnFirst == 0) {  
  10.             szIfStart = ""  
  11.     }else{  
  12.             szIfStart = GetBufLine(hbuf, LnFirst-1)  
  13.     }  
  14.     szIfEnd = GetBufLine(hbuf, lnLast+1)  
  15.     if(szIfStart == "#if 0" && szIfEnd == "#endif") {  
  16.             DelBufLine(hbuf, lnLast+1)  
  17.             DelBufLine(hbuf, lnFirst-1)  
  18.             sel.lnFirst = sel.lnFirst – 1  
  19.             sel.lnLast = sel.lnLast – 1  
  20.     }else{  
  21.             InsBufLine(hbuf, lnFirst, "#if 0")  
  22.             InsBufLine(hbuf, lnLast+2, "#endif")  
  23.             sel.lnFirst = sel.lnFirst + 1  
  24.             sel.lnLast = sel.lnLast + 1  
  25.     }  
  26.    
  27.     SetWndSel( hwnd, sel )  
  28. }  
macro AddMacroComment()
{
    hwnd=GetCurrentWnd()
    sel=GetWndSel(hwnd)
    lnFirst=GetWndSelLnFirst(hwnd)
    lnLast=GetWndSelLnLast(hwnd)
    hbuf=GetCurrentBuf()
 
    if(LnFirst == 0) {
            szIfStart = ""
    }else{
            szIfStart = GetBufLine(hbuf, LnFirst-1)
    }
    szIfEnd = GetBufLine(hbuf, lnLast+1)
    if(szIfStart == "#if 0" && szIfEnd == "#endif") {
            DelBufLine(hbuf, lnLast+1)
            DelBufLine(hbuf, lnFirst-1)
            sel.lnFirst = sel.lnFirst – 1
            sel.lnLast = sel.lnLast – 1
    }else{
            InsBufLine(hbuf, lnFirst, "#if 0")
            InsBufLine(hbuf, lnLast+2, "#endif")
            sel.lnFirst = sel.lnFirst + 1
            sel.lnLast = sel.lnLast + 1
    }
 
    SetWndSel( hwnd, sel )
}

這份宏的代碼可以把光標所在的行註釋掉,定義快捷鍵爲Ctrl+*:

  1. macro CommentSingleLine()  
  2. {  
  3.     hbuf = GetCurrentBuf()  
  4.     ln = GetBufLnCur(hbuf)  
  5.     str = GetBufLine (hbuf, ln)  
  6.     str = cat("/*",str)  
  7.     str = cat(str,"*/")  
  8.     PutBufLine (hbuf, ln, str)  
  9. }  
macro CommentSingleLine()
{
    hbuf = GetCurrentBuf()
    ln = GetBufLnCur(hbuf)
    str = GetBufLine (hbuf, ln)
    str = cat("/*",str)
    str = cat(str,"*/")
    PutBufLine (hbuf, ln, str)
}

將一行中鼠標選中部分註釋掉,定義快捷鍵爲Ctrl+shift+*:

  1. macro CommentSelStr()  
  2. {  
  3.     hbuf = GetCurrentBuf()  
  4.     ln = GetBufLnCur(hbuf)  
  5.     str = GetBufSelText(hbuf)  
  6.     str = cat("/*",str)  
  7.     str = cat(str,"*/")  
  8.     SetBufSelText (hbuf, str)  
  9. }  
macro CommentSelStr()
{
    hbuf = GetCurrentBuf()
    ln = GetBufLnCur(hbuf)
    str = GetBufSelText(hbuf)
    str = cat("/*",str)
    str = cat(str,"*/")
    SetBufSelText (hbuf, str)
}


在一行代碼前添加註釋性文字,定義快捷鍵爲Alt+/:

在一行代碼前添加註釋性文字,定義快捷鍵爲Alt+\:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章