有人说操作系统、编程语言和编辑器是程序员永恒的吐槽话题。前不久在水木上看到有人又提起Source Insight,不禁回忆起当年使用Source Insight的日子,各种快捷键用得飞快,以致于不小心打印(估计是碰到了Ctrl+P)了一篇与工作无关的文档,然后被HW公司通报批评,还罚了200元工资。

当然今天的重点不是吐槽,而是和大家分(xiǎn)享(bai)一段自己在Source Insight上开发的一个宏。

和Word,Excel上可以使用VBA一样,Source Insight也提供了一个内置的类C(C-like)的宏脚本,可以用来插入格式化文本(例如插入含有公司版权信息注释),完成自动编辑等操作。下面介绍如何编辑自己的宏,并为其设置快捷键。

Source Insight安装后会自动生成一个Base Project,里面的默认文件是utils.em,把自定义的宏添加进去即可生效。

下面的代码是实现Visual Studio那个番茄助手的切换头文件和源文件的功能:

// open the corresponding .cpp or .h file
macro opencorrespondingcpporhfile()
{
    hcurrentbuf = getcurrentbuf ()
    bname = getbufname (hcurrentbuf)
    len = strlen (bname)

    if (".cpp" == strmid (bname, len-4, len))
    {
        filename = strmid (bname, 0, len-4)#".h"
    }
    else if (".h" == strmid (bname, len-2, len))
    {
        filename = strmid (bname, 0, len-2)#".cpp"
    }
    else
    {
        filename = nil
    }
    if (filename != nil)
    {
        hbufnext = openbuf (filename)
        if (hbufnext != hnil)
        {
            setcurrentbuf (hbufnext)
        }
    }
}

接下来是设置快捷键,打开Options→Key Assignments…,从命令区域中选择“Macro: OpenCorrespondingCppOrHFile”,然后点“Assign New Key…”按钮。我把快捷键设置为“Alt + ·”

enter image description here

之后就可以在你的C++工程中用以上快捷键切换源文件和头文件了。但是源文件和头文件的文件名必须是相同的。

Enjoy it!