source insight并没有提供这样的快捷键,有时候用着比较烦人。终于找到了方法:使用宏命令,并设置快捷键与之绑定。
1、打开source insight,Project -> Open Project,打开Base项目,注:Base项目是source insight默认已经创建的。
2、打开Utils.em文件,在该文件的末尾加入如下内容:
/* cpp和hpp文件互换(当前只支持同一目录下的文件互换) */ macro switch_cpp_hpp() { hwnd = GetCurrentWnd() hCurOpenBuf = GetCurrentBuf() if (hCurOpenBuf == 0) stop curOpenFileName = GetBufName(hCurOpenBuf) curOpenFileNameLen = strlen(curOpenFileName) // 文件类型临时缓冲区 strFileExt = NewBuf("strFileExtBuf") ClearBuf(strFileExt) // 头文件类型 index_hpp_begin = 0 // 头文件开始索引 AppendBufLine(strFileExt, ".h") AppendBufLine(strFileExt, ".hpp") index_hpp_end = GetBufLineCount(strFileExt) // 头文件结束索引 // 源文件类型 index_cpp_begin = index_hpp_end // 源文件开始索引 AppendBufLine(strFileExt, ".c") AppendBufLine(strFileExt, ".cpp") AppendBufLine(strFileExt, ".cc") AppendBufLine(strFileExt, ".cx") AppendBufLine(strFileExt, ".cxx") index_cpp_end = GetBufLineCount(strFileExt) // 源文件结束索引 isCppFile = 0 // 0:未知 1:头文件 2:源文件,默认未知扩展名 curOpenFileExt = "" // 当前打开文件的扩展名 index = index_hpp_begin // 遍历头文件,判断是否当前打开文件是头文件类型 while(index < index_cpp_end) { curExt = GetBufLine(strFileExt, index) curExtLen = strlen(curExt) curOpenFileExt = strmid(curOpenFileName, curOpenFileNameLen-curExtLen, curOpenFileNameLen) // 当前打开文件的扩展名 // 调试 // AppendBufLine(debugBuf, curExt) // AppendBufLine(debugBuf, curOpenFileExt) if(curOpenFileExt == curExt) // 匹配成功 { if (index < index_hpp_end) isCppFile = 1 // 当前打开文件是头文件 else isCppFile = 2 // 源文件 break } index = index + 1 }// while(index < index_cpp_end) // 调试 // AppendBufLine(debugBuf, isCppFile) index_replace_begin = index_hpp_begin index_replace_end = index_hpp_end if (isCppFile == 1) // 当前打开文件是头文件 { index_replace_begin = index_cpp_begin index_replace_end = index_cpp_end } else if(isCppFile == 2) // 当前打开文件是源文件 { index_replace_begin = index_hpp_begin index_replace_end = index_hpp_end // 调试 // AppendBufLine(debugBuf, "cpp") } else // 未知类型 { //CloseBuf(strFileExt) // 关闭缓冲区 //stop index_replace_begin = 9999 index_replace_end = index_replace_begin // 下面循环不会执行 } index = index_replace_begin while(index < index_replace_end) { destExt = GetBufLine(strFileExt, index) destFileName = strmid(curOpenFileName, 0, curOpenFileNameLen-strlen(curOpenFileExt)) // 不包括扩展名,绝对路径 // 尝试当前目标扩展名是否能够打开 destFilePath = cat(destFileName, destExt) // 文件名(包括扩展名) hCurOpenBuf = OpenBuf(destFilePath) if(hCurOpenBuf != 0) { SetCurrentBuf(hCurOpenBuf) break } // 尝试进行目录替换,看能否打开文件(如何设计:支持多个目录) // ...(赞不支持) index = index + 1 } CloseBuf(strFileExt) // 关闭缓冲区 // 调试 // AppendBufLine(debugBuf, "finished") }
4、打开Option -> Key Assignments。在Command栏选中“Macro: switch_cpp_hpp”;点击Assign New Key按钮设置快捷键(Ctrl+·),点击OK,就设定好了。
5、再打开一个项目,试试你刚刚设定的快捷键吧!!!