sourceinsight自定义宏

本文介绍了如何在SourceInsight 4.0中自定义宏,实现包括快速切换标签、头文件与实现文件、删除文字、插入预处理指令等实用功能,并给出了具体的宏源码和绑定的快捷键位。

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

该宏脚本使用的是 sourceinsight 4.00.0095, 逻辑上, 应该所有的4.0版本都能用, 但未测试

1. 涉及的功能有:

    alt1 alt2切换标签      绑定的键位是: alt+1 alt+2 alt+3... alt+0

    .h与.cpp切换            绑定的键位是: alt+F12

    删除光标右边的所有的东西        绑定的键位是: ctl+k

    删除光标左面的字符                   绑定的键位是: ctl+backspace

    删除光标右边的字符                  绑定的键位是: ctl+delete

    插入#ifndef *** #define **** #endif ****      绑定的键位是: ctl+shift+=

    注释                        绑定的键位是: alt+;

 

2. 具体的源码如下:

// 给所选择的行添加注释
// 使用行注释, 若已经存在的注释, 则取消注释
// 添加的注释与字符之间无空格
macro CommentBlock()
{
    hbuf = GetCurrentBuf();
    hwnd = GetCurrentWnd();
    if (!hbuf || !hwnd) return 0

    sel = GetWndSel(hwnd);
    allcnt = GetBufLineCount(hbuf)

    chTab = CharFromAscii(9)
    chSpace = CharFromAscii(32)
    chComment = CharFromAscii(47)
    // 循环所有选择的行
    iLine = sel.lnFirst;
    while (iLine <= sel.lnLast)
    {
        newLine = ""  //备用的新行
        curLine = GetBufLine(hbuf, iLine);
        col1 = 0
        col2 = strlen(curLine)
        has1 = 0
        if (col2 > 0) {
            while (col1 <= col2) {
                ch = curLine[col1]
                
                if (ch == chSpace || ch == chTab) {
                    newLine = newLine # ch
                }
                else {
                    if (ch == chComment && col1 < col2) {
                        tch = curLine[col1+1]
                        if (tch == chComment) {
                            remain = strmid(curLine, col1+2, col2)
                            newLine = newLine # remain
                            break
                        }
                    }
                    remain = strmid(curLine, col1, col2)
                    newLine = newLine # "//" # remain
                    break
                }
                col1++
            }
            // 把已经添加注释的行, 替换
            PutBufLine(hbuf, iLine, newLine);
        }
        iLine = iLine + 1;
    }
}

// alt + 1 switch tab, windows tab options中tab sorting使用Tab name
macro alt1() {  setCurWindow(0)}
macro alt2() {  setCurWindow(1)}
macro alt3() {  setCurWindow(2)}
macro alt4() {  setCurWindow(3)}
macro alt5() {  setCurWindow(4)}
macro alt6() {  setCurWindow(5)}
macro alt7() {  setCurWindow(6)}
macro alt8() {  setCurWindow(7)}
macro alt9() {  setCurWindow(8)}
macro alt0() {  setCurWindow(9)}

macro curtableft() {    CurWindowSide(-1)}
macro curtabright() {   CurWindowSide(1) }

// 1. 创建一个buf(si中只能用buf来保存array)
// 2. 循环取所有的窗口的文件名, 按字母序插入创建的buf中
// 3. buf中保存的文件名格式是: "文件件"+","+"id", 其中id是该文件的窗口id
// 4. 根据alt的id取buf中保存的文件名, 取出窗口id, 切换到该窗口id
function setCurWindow(idx) {
    if (idx > 9 || idx < 0) {
        msg("cur function parameter should [0,9], but cur is" # idx)
        return
    }
    // 1. 打开nbuf
    nbuf = GetnBuf()
    // 2.取idx中所对应的buf的文件名, 并设置为当前窗口
    if (idx >= 0 && idx <= 9 && idx < GetBufLineCount (nbuf)) {
        cln = GetBu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值