sourceinsight 设置快捷键 Source Insight自定义快捷键

Source Insight自定义快捷键

鄙人一直用的是Eclipse来开发,如果只是做java的话,这个就够了,但因时不时要查C/C++的代码,这个时候这个工具就有点力不从心了,因为C/C++的代码非常多,一般放在服务器上,就得用Source Insight来看了,Source Insight非常强大,它能够把服务器上的代码直接导入到项目中,但开始用的时候,有点不习惯,觉得不如Eclipse方便,特别是快捷键方面,其实这一点,Source Insight比Eclipse强多了,我觉得就好像是Photoshop与美图秀秀一样,这里就介绍一下,如何修改Source Insight注释快捷键

注释有两种:

//行注释在Eclipse中的快捷键是:Ctrl+/

/*段落注释*/在Eclipse中的快捷键是:Ctrl+Shift+/

相信你使用Source Insight来查看代码时,你应该会编程,那么,在Source Insight里添加注释,就要写代码了,其语法跟C语言差不多,里面内置很多函数,只要调用就行了,建议先看遍Help,这里面有详细的函数说明


其实Source Insight里面的快捷键都是对应一段宏代码,这些代码就放在

D:\用户目录\Documents\Source Insight\Projects\Base\utils.em

这个文件里,当然这个目录可能跟你的不一样,但你可以这样找到:

Progect->Open progect->Base

这个Base是安装完成后,就会有的一个项目,选中它,就会显示其路径

utils.em里面就是一堆的宏代码

用任何一款文本编辑器都可以打开它,

添加一段宏:

这段代码是 //行注释

实现的功能是对选中的行加/取消行注释


  
  
  1. //添加注释
  2. macro MultiLineComment()
  3. {
  4. hwnd = GetCurrentWnd()
  5. selection = GetWndSel(hwnd)
  6. LnFirst = GetWndSelLnFirst(hwnd) //取首行行号
  7. LnLast = GetWndSelLnLast(hwnd) //取末行行号
  8. hbuf = GetCurrentBuf()
  9. if(GetBufLine(hbuf, 0) == "//magic-number:tph85666031"){
  10. stop
  11. }
  12. Ln = Lnfirst
  13. buf = GetBufLine(hbuf, Ln)
  14. len = strlen(buf)
  15. while(Ln <= Lnlast) {
  16. buf = GetBufLine(hbuf, Ln) //取Ln对应的行
  17. if(buf == ""){ //跳过空行
  18. Ln = Ln + 1
  19. continue
  20. }
  21. if(StrMid(buf, 0, 1) == "/") { //需要取消注释,防止只有单字符的行
  22. if(StrMid(buf, 1, 2) == "/"){
  23. PutBufLine(hbuf, Ln, StrMid(buf, 2, Strlen(buf)))
  24. }
  25. }
  26. if(StrMid(buf, 0, 1) != "/"){ //需要添加注释
  27. PutBufLine(hbuf, Ln, Cat( "//", buf))
  28. }
  29. Ln = Ln + 1
  30. }
  31. SetWndSel(hwnd, selection)
  32. }
添加完成,保存!再给这段宏加个快捷键: Ctrl+/

方法:

Options->Key Assignments

弹出一个对话框,在Command下面的输入框中,输入刚保存的宏名 MultiLineComment (不要用复制,手动输入最好)

其实只要输入前几个字符,下面的选择框里就会过滤掉其他的宏名,选中要添加快捷键的宏,如果没有添加快捷键的话,在Keystrokes下面是没有按键名的,单击Assign New Key...,弹出一个对话框,

Press the key-combination you want to assign,or click a mouse.....

大致的意思就是请按组合键或点击鼠标,最好不要按鼠标,可以使用Ctrl Alt Shift组合,按我们的意思,只要按下Ctrl+/就可以了,在Keystrokes 下面就会出现Ctrl+/,如果有重复的,就会有一个提示,

Do you want to remove that keystroke from the "XXXXXXX" command?

如果你希望当前宏使用这个快捷键,点 是 ,其他可以再换个组合


下面再添加/*段落注释*/


  
  
  1. //注释选中行/* */
  2. macro CommentSelStr()
  3. {
  4. hwnd=GetCurrentWnd()
  5. //sel=GetWndSel(hwnd)
  6. lnFirst=GetWndSelLnFirst(hwnd)
  7. lnLast=GetWndSelLnLast(hwnd)
  8. hbuf=GetCurrentBuf()
  9. Ln = Lnfirst
  10. buf = GetBufLine(hbuf, Ln)
  11. //msg(buf)
  12. if(buff== ""||Strlen(buf)== 0){
  13. //msg("buf is null")
  14. } else{
  15. if(StrMid(buf, 0, 1) == "/") { //需要取消注释,防止只有单字符的行
  16. if(StrMid(buf, 1, 2) == "*"){
  17. PutBufLine(hbuf, Ln, StrMid(buf, 2, Strlen(buf)))
  18. } else{
  19. str=cat( "/*",buf)
  20. PutBufLine (hbuf, ln, str)
  21. }
  22. } else{
  23. str=cat( "/*",buf)
  24. PutBufLine (hbuf, ln, str)
  25. }
  26. ln=lnLast
  27. buf=GetBufLine(hbuf, Ln)
  28. len_s= strlen(buf)
  29. //msg(len_s)
  30. //msg(buf)
  31. //msg(StrMid(buf, strlen(buf)-1, strlen(buf)))
  32. //msg(StrMid(buf, strlen(buf)-2, strlen(buf)-1))
  33. if(StrMid(buf, strlen(buf) -1, strlen(buf)) == "/"){
  34. if(StrMid(buf, strlen(buf) -2, strlen(buf) -1) == "*"){
  35. PutBufLine(hbuf, Ln, StrMid(buf, 0, Strlen(buf) -2))
  36. } else{
  37. str=cat(buf, "*/")
  38. PutBufLine (hbuf, ln, str)
  39. }
  40. } else{
  41. str=cat(buf, "*/")
  42. PutBufLine (hbuf, ln, str)
  43. }
  44. //SetWndSel( hwnd, sel )
  45. }
  46. }



添加快捷键:Ctrl+Shift+/,方法如上面所述


下面是几个常用的宏,建议快捷键:

AddMacroComment:Ctrl+Shift+3


  
  
  1. //添加“#ifdef 0”和“#endif”
  2. macro AddMacroComment()
  3. {
  4. hwnd=GetCurrentWnd()
  5. sel=GetWndSel(hwnd)
  6. lnFirst=GetWndSelLnFirst(hwnd)
  7. lnLast=GetWndSelLnLast(hwnd)
  8. hbuf=GetCurrentBuf()
  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. SetWndSel( hwnd, sel )
  27. }
  28. //注释光标所在行
  29. macro CommentSingleLine(){
  30. hbuf = GetCurrentBuf()
  31. ln = GetBufLnCur(hbuf)
  32. str = GetBufLine (hbuf, ln)
  33. str = cat( "/*",str)
  34. str = cat(str, "*/")
  35. PutBufLine (hbuf, ln, str)
  36. }
[转自]https://blog.csdn.net/ytmfdw/article/details/43487453

猜你喜欢

转载自blog.csdn.net/weixin_42868654/article/details/88062254