SourceInsight 4.0 之 常用宏使用详解(附最新完善版本的宏)

本文详细介绍如何在SourceInsight4中定制实用宏,包括宏的编写、编辑及使用方法,并分享了一些常用的宏示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

  SourceInsight 作为一款经典的代码查看工具,小巧、强大,各种代码通吃!从2018年开始,更新到了4.x版本。相对于之前死都不更新的3.5版本,4.x的添加了许多更为好用的功能!以下文章均是以最新版本的 SourceInsight 4 为例来说明的。

  SourceInsight 3.5也好,还是最新的4.x版本,都支持强大的宏编制。官网给出了不少例子:https://www.sourceinsight.com/download/macro-files/。 目前,网上也有各种各样的 SourceInsight 宏可用,但是或多或少都存在一定的缺陷。例如注释与反注释、头文件与源文件的切换等等。如果有使用比较现代化的IDE(比如:Visual Studio、eclipse等)就会发现,SourceInsight 有些功能确实有点落后!在此基础上,参照网上现有的一些宏,我进行了一下完善,具体效果如下:
结果
  这里吐槽一下,有些人喜欢添加一堆无用的宏。例如:插入for循环、if语句等的宏,这完全就是画蛇添足的做法。 有经验的程序员都应该知道,目前,绝大多数代码编辑器(即便是级别不到IDE的)都有代码Snippets功能。 SourceInsight 也不例外!
Snippets
对于和语言相关的内容,直接添加 Snippets才是解决方法! 当我们编辑打出关键字后,将自动显示Snippets供选择!而目前,网上现有的SourceInsight宏中,很多都会添加一堆无用的宏!

宏编辑

  正常安装完SourceInsight,会在系统盘符(C):/用户/你的用户名/Documents目录下生产一个名为Source Insight 4.0的文件夹,这个文件夹就是 Source Insight 4.0 的各种配置文件所在目录,其中的宏实现就在其中的.\Projects\Base目录下。
SI
  安装后会在安装目录下生成帮助文档,其中有非常详细的宏编写章节进行介绍。通常可以有两种方式使用自己添加的宏:

  1. 建立独立的xxxx.em文件,放在上面说的.\Projects\Base目录下。这样使用比较麻烦,需要将自己的文件添加到base项目。否则,不会加载自己的文件!
  2. 直接双击打开默认的Base.siproj工程或者启动SourceInsight,从中打开,在里面添加自己的宏。这样更加方便!

我这里使用的第二种方式,具体步骤如下:
打开
打开后就会出现如下编辑界面:
编辑
从中可以看到,SourceInsight 本身自带了一部分宏值,我们只需要在后面添加自己的宏即可!
  SourceInsight的宏编写还是非常简单的,参考其说明文档,基本只要有编程经验或者有为其他工具编写插件经验的人都可以很快编写出一个简单的宏!附件我会提供我自己使用的源文件,里面都有很详细的注释!

// 用于添加//注释多行
macro CommentMultiLine_CPP()
{
	hwnd = GetCurrentWnd()
	if(hwnd == hNil)
	{
		Msg("No file opened! Please open one file.")
	}
	else
	{
		selection = GetWndSel(hwnd)			// 选中的区域信息
		LnFirst = GetWndSelLnFirst(hwnd)	// 取选中的区域首行行号
		LnLast = GetWndSelLnLast(hwnd)		// 取选中的区域末行行号
		hbuf = GetCurrentBuf()
		if(GetBufLine(hbuf, 0) =="//magic-number:tph85666031")
		{
			stop
		}
		Ln = Lnfirst
		while(Ln <= Lnlast) 
		{
			buf = GetBufLine(hbuf, Ln)	//取Ln对应的行
			if(buf =="")
			{					//跳过空行
				Ln = Ln + 1
				continue
			}
		<span class="token keyword">if</span><span class="token punctuation">(</span><span class="token function">StrMid</span><span class="token punctuation">(</span>buf<span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token string">"/"</span><span class="token punctuation">)</span> <span class="token comment">// 需要取消注释,防止只有单字符的行</span>
		<span class="token punctuation">{</span>	 
			<span class="token keyword">if</span><span class="token punctuation">(</span><span class="token function">StrMid</span><span class="token punctuation">(</span>buf<span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token string">"/"</span><span class="token punctuation">)</span>
			<span class="token punctuation">{</span>
				<span class="token function">PutBufLine</span><span class="token punctuation">(</span>hbuf<span class="token punctuation">,</span> Ln<span class="token punctuation">,</span> <span class="token function">StrMid</span><span class="token punctuation">(</span>buf<span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token function">Strlen</span><span class="token punctuation">(</span>buf<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
			<span class="token punctuation">}</span>
		<span class="token punctuation">}</span>
		
		<span class="token keyword">if</span><span class="token punctuation">(</span><span class="token function">StrMid</span><span class="token punctuation">(</span>buf<span class="token punctuation">,</span><span class="token number">0</span><span class="token punctuation">,</span><span class="token number">1</span><span class="token punctuation">)</span> <span class="token operator">!=</span><span class="token string">"/"</span><span class="token punctuation">)</span><span class="token comment">// 需要添加注释</span>
		<span class="token punctuation">{</span>		 
			<span class="token function">PutBufLine</span><span class="token punctuation">(</span>hbuf<span class="token punctuation">,</span> Ln<span class="token punctuation">,</span> <span class="token function">Cat</span><span class="token punctuation">(</span><span class="token string">"//"</span><span class="token punctuation">,</span> buf<span class="token punctuation">)</span><span class="token punctuation">)</span>
		<span class="token punctuation">}</span>
		Ln <span class="token operator">=</span> Ln <span class="token operator">+</span> <span class="token number">1</span>
	<span class="token punctuation">}</span>
	<span class="token function">SetWndSel</span><span class="token punctuation">(</span>hwnd<span class="token punctuation">,</span> selection<span class="token punctuation">)</span>
<span class="token punctuation">}</span>

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

宏使用

  当做好了如上步骤后,SourceInsight 便会自动加载我们编制的宏。使用非常简单,如下图:
在这里插入图片描述
从中选择自己的宏值即可!还可以直接指定快捷键!

附件

完善版宏源文件

        </div>

转载:https://blog.youkuaiyun.com/ZCShou优快云/article/details/84375260

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值