[editor]Source Insight编辑器的快捷键设置暨相关宏语言(Macro Language)的学习一
2017-01-07 15:34
495 查看
今天壁纸突然变成了一幅图,图里有句话:“人的乐趣之一就是去完成那些别人认为你完成不了的事”。所以就有了这篇博文。如果没有这句话,此篇博文还要晚上几天才能发出来。感谢百度壁纸软件予我醍醐灌顶(微笑脸
)。
最近在使用Source Insight编辑器来维护和编写C/C++代码,不得不说其的确好用强大。但对于中文的支持和美观性却不如人意,但用起来还是一如既往的爽。
Source Insight编辑器中的快捷键是可以自定义的,这里的自定义是说:可以通过编写宏(Macro)来定义特定快捷键的功能。曾经基友对我说过:不要做工具党。他甚至都没想到这句话会影响到我现在任何事情都要亲历亲为(再次微笑脸
)。
Source Insight编辑器缺少两个我需要的快捷键,那么我就自己写两个宏好了。
首先摆出一个链接http://blog.csdn.net/ytmfdw/article/details/43487453 名为"Source Insight自定义快捷键"。正是这篇文章给了我一个大的方向----看帮助文档,给出链接以表尊重。(声明:代码文章皆是原创,没有对此链接博文进行抄袭
)
下午花了三个小时对帮助文档(Source Insight Help Document)中的宏语言模块(Macro language)进行了特定的学习,基本了解到Source Insight内置宏语言是一门类C类脚本的语言。官方文档中写到:“The Source Insight macro language syntax is similar to C”又写到:“Source
Insight provides a C-like macro language”,这些都说明了其语法等方面都是类C的。
本篇博文先着重讲两个功能的实现,关于其宏语言的语法,在下篇博文中将会系统的讲到。
好了,下面进入到正题。
[b]--------------------------------------------------------------------------[/b]
--------------------------------------------------------------------------
功能一:快速删除多个空格
1、问题描述:
)
看到之前处理这种情况是,按下Backspace键,进行多次回退,调整到我们需要的位置。第7行代码的调整,按了4下Backspace键,1下Tab键。
下面是我写的宏的效果:
第7行调整位置,1次Ctrl+Backspace,一次Tab键。优化体现在了:我现在可以使用快捷键一次将光标左侧的字符一次清空。之前需要5个单位时间的工作量现在只需要2个单位时间就可以完成了。
2.代码解析
[b]--------------------------------------------------------------------------[/b]
--------------------------------------------------------------------------
功能二:快捷键注释代码
1、功能描述
在其他的主流编辑器中,Ctrl+/是注释功能的快捷键,而在Source Insight中确实没有的,其Ctrl+/的功能是全局搜索的功能。维护裁剪代码非常的不方便,经过我的认真思考与借鉴,得到了一个这样的效果:
我只需要将我想注释的代码块选中,按下Ctrl+B即可。同时在未选中任何代码块的情况下,Ctrl+B会只注释掉当前光标所在的一行。如果该行已经被注释,那么按下Ctrl+B的效果将会是取消注释。
2.代码解析
总结:
其实呢像这种宏语言没有必要去花费时间学习,只要能用就可以。可以通文档来找到自己需要的函数即可,多查本地文档而不是去百度。
在Source Insight中,宏函数要放在一个*.em文件中,其后缀名称的含义我猜测应该是extension macro。在其中编写完毕之后点击菜单项Options->Key Assignments,将快捷键同无参数宏函数关联起来。
还是那句话,Source Insight只是一个工具,其实没必要去做太多的工作。但笔者已经决定在Win平台上使用Source Insight,Linux平台上使用Vim了。所以适当的做一些订制化的工作是可以的。同时笔者很不喜欢直接拿别人的拓展程序直接用,直接从GitHub上复制别人的程序,我感觉轮子只要你自己造一遍,才能更好的驾驭它。
附录:本博文代码文件下载
http://download.csdn.net/detail/i_am_tom/9731866
)。
最近在使用Source Insight编辑器来维护和编写C/C++代码,不得不说其的确好用强大。但对于中文的支持和美观性却不如人意,但用起来还是一如既往的爽。
Source Insight编辑器中的快捷键是可以自定义的,这里的自定义是说:可以通过编写宏(Macro)来定义特定快捷键的功能。曾经基友对我说过:不要做工具党。他甚至都没想到这句话会影响到我现在任何事情都要亲历亲为(再次微笑脸
)。
Source Insight编辑器缺少两个我需要的快捷键,那么我就自己写两个宏好了。
首先摆出一个链接http://blog.csdn.net/ytmfdw/article/details/43487453 名为"Source Insight自定义快捷键"。正是这篇文章给了我一个大的方向----看帮助文档,给出链接以表尊重。(声明:代码文章皆是原创,没有对此链接博文进行抄袭
)
下午花了三个小时对帮助文档(Source Insight Help Document)中的宏语言模块(Macro language)进行了特定的学习,基本了解到Source Insight内置宏语言是一门类C类脚本的语言。官方文档中写到:“The Source Insight macro language syntax is similar to C”又写到:“Source
Insight provides a C-like macro language”,这些都说明了其语法等方面都是类C的。
本篇博文先着重讲两个功能的实现,关于其宏语言的语法,在下篇博文中将会系统的讲到。
好了,下面进入到正题。
[b]--------------------------------------------------------------------------[/b]
--------------------------------------------------------------------------
功能一:快速删除多个空格
1、问题描述:
#include<iostream> using std::cout; using std::endl; int main(int argc,char** argv) { cout << "hello world" << endl; int i = 1; cout << i << endl; return 0; }看到了吗?第7、8行代码没有缩进对齐。我是一个有代码洁癖的人,这种情况真的是不能忍。那能做的就是这样:(特地做的动态图
)
看到之前处理这种情况是,按下Backspace键,进行多次回退,调整到我们需要的位置。第7行代码的调整,按了4下Backspace键,1下Tab键。
下面是我写的宏的效果:
第7行调整位置,1次Ctrl+Backspace,一次Tab键。优化体现在了:我现在可以使用快捷键一次将光标左侧的字符一次清空。之前需要5个单位时间的工作量现在只需要2个单位时间就可以完成了。
2.代码解析
//Source Insight Macro Language 是大小写不敏感(not case sensitive)的且变量使用时不需提前声明的。 //这些在官方文档中提到过,下篇博文会对其语法(syntex of Macro Language)进行讲解。 macro SelfDel() { hwnd = GetCurrentWnd(); //取得当前窗口句柄,获得当前活动窗口的句柄,用于确定要对哪个文件进行操作。 Ln = GetWndSel(hwnd); //取得当前选中位置信息返回一个record var变量相当于一个字典变量 raw = Ln.lnFirst; //光标所在行号,注意首行行号为0 hbuf = GetCurrentBuf(); //取得当前文件内Buffer,可以理解为文件本身或者是文件在内存中的头指针。 strLine = GetBufLine(hbuf,raw); //得到在raw行的字符串内容 if(strLine == Nil) //如果当前没有任何字符(注意这里说的是任意字符,包括不可见字符),那么安全退出 { stop; //如果if语句被执行,那么stop会将宏安全退出。类似于C中的return } strLineLength = strlen(strLine); //取得字符串长度 PutBufLine(hbuf,raw,strmid(strLine,Ln.ichFirst,strLineLength));//将特定行的字符用处理过后的字符串替代,实现删除空白假象 stop; //程序最后了,其实加不加stop都一样 }
[b]--------------------------------------------------------------------------[/b]
--------------------------------------------------------------------------
功能二:快捷键注释代码
1、功能描述
在其他的主流编辑器中,Ctrl+/是注释功能的快捷键,而在Source Insight中确实没有的,其Ctrl+/的功能是全局搜索的功能。维护裁剪代码非常的不方便,经过我的认真思考与借鉴,得到了一个这样的效果:
我只需要将我想注释的代码块选中,按下Ctrl+B即可。同时在未选中任何代码块的情况下,Ctrl+B会只注释掉当前光标所在的一行。如果该行已经被注释,那么按下Ctrl+B的效果将会是取消注释。
2.代码解析
macro strLineNotSpace(strline)//有参数的宏函数是不能作为命令在直接使用的,它是被其他宏来调用的 { i = 0; Length = strlen(strline); while(i < Length) { integerAsciiFromChar = AsciiFromChar(strline[i])//得到每个字符的ASCII码值 if(integerAsciiFromChar != 9 && integerAsciiFromChar != 32)//返回第一个出现非空白字符的位置 return i;//这里的9代表Tab空白符,32表示space空白符 i++; /* 不要忘了这个自增运算,我就是忘了一下,导致运行宏的时候整个Source Insight软件崩溃. 如果在软件启动的时候,这个宏自动运行了 那么这大概这就是一个比较简陋的宏病毒吧 */ } } macro CommentCode() { hwnd = GetCurrentWnd();//取得当前活动窗口句柄? hbuf = GetCurrentBuf(); lnFirst = GetWndSelLnFirst(hwnd);//得到选中区域首行索引 lnLast = GetWndSelLnLast(hwnd);//得到选中区域末行索引 LineCount = GetBufLineCount(hbuf)//得到整个文件Buffer总行数 i = lnFirst;//选中区域首行索引 while(i <= lnLast) { strline = GetBufLine(hbuf,i);// strlineLength = strlen(strline);//取得字符串长度 if(strlineLength == 0)//对于空白行,我们执行continue跳过,不做任何操作 { i++; if(i >= LineCount) stop; SetBufIns(hbuf,i,1); continue; } midIndex = strLineNotSpace(strline); newstrline = cat(strmid(strline,0,midIndex),"//"); newstrline = cat(newstrline,strmid(strline,midIndex,strlineLength)); if(strlineLength > 2)//对待字符长度大于2的行,就要检测它是不是已经被注释了,如果是的话,就取消注释 { if(strmid(strline,midIndex,midIndex+2) == "//")//取消注释 { newstrline = cat(strmid(strline,0,midIndex),strmid(strline,midIndex+2,strlineLength)); } } PutBufLine(hbuf,i,newstrline); i++; if(i >= LineCount) stop; SetBufIns(hbuf,i,1);//将光标移到下一行,使得Ctrl+B可以连续执行 } }
总结:
其实呢像这种宏语言没有必要去花费时间学习,只要能用就可以。可以通文档来找到自己需要的函数即可,多查本地文档而不是去百度。
在Source Insight中,宏函数要放在一个*.em文件中,其后缀名称的含义我猜测应该是extension macro。在其中编写完毕之后点击菜单项Options->Key Assignments,将快捷键同无参数宏函数关联起来。
还是那句话,Source Insight只是一个工具,其实没必要去做太多的工作。但笔者已经决定在Win平台上使用Source Insight,Linux平台上使用Vim了。所以适当的做一些订制化的工作是可以的。同时笔者很不喜欢直接拿别人的拓展程序直接用,直接从GitHub上复制别人的程序,我感觉轮子只要你自己造一遍,才能更好的驾驭它。
附录:本博文代码文件下载
http://download.csdn.net/detail/i_am_tom/9731866
相关文章推荐
- 【常用】source insight常用设置及快捷键
- Source Insight 常用设置和快捷键大全
- Source Insight 常用设置和快捷键大全
- Source Insight 4.0 常用设置和快捷键大全(一)
- Source Insight 常用设置和快捷键大全
- Source Insight 常用设置和快捷键大全
- source insight 配色方案&设置相对路径&快捷键&导入有效linux kernel
- source insight相关设置
- source insight 常用设置及快捷键
- Source Insight 常用设置和快捷键大全
- 【那些工作中学到的小技巧】 source insight 快捷键设置
- Source Insight 常用设置和快捷键大全
- Source Insight 常用设置和快捷键大全
- Source Insight 常用设置和快捷键大全
- Source Insight 常用设置和快捷键大全
- Source Insight 常用设置和快捷键大全
- Source Insight相关设置
- Source Insight 常用设置和快捷键大全
- Source Insight 快捷键 及 常用设置 汇总
- Pycharm学习教程(5) Python快捷键相关设置