批量评论快捷键:Ctrl+K+C
批量取消注释快捷键:Ctrl + K + U
?
批量评论快捷键:Ctrl + K + C
批量取消注释快捷键:Ctrl + K + U
转载于:https://www.sychzs.cn/nangongyibin/p/10433526.html
在敲代码的过程中,需要对类和函数进行注释,但是一遍又一遍地复制粘贴非常麻烦。我终于找到了一个很好的解决方案:使用宏。
? ?所谓宏就是组织在一起的一组命令,作为单个命令来完成特定的任务。在日常办公环境中,无论是Office还是Foxmail、VS甚至我们使用的输入法,都具有宏功能。 VS2010中的宏不仅可以记录模块,还可以记录类和代码文件。通过设置编辑宏,然后为设置的宏添加特定的快捷键,您可以轻松地将设置的注释块添加到VS2010代码编辑器中的任何位置。实现过程如下:
???
? ? 1、打开“工具”→“宏”→“宏IDE”,进入如下界面,右键“MyMacros”,添加模块
? ?命名模块:
?
? 2.添加代码并保存
? ?双击添加的模块进入编辑状态,添加如下代码:
进口系统
导入 EnvDTE
进口EnvDTE80
进口EnvDTE90
进口EnvDTE90a
进口EnvDTE100
导入系统.诊断
公共模块功能说明
子文档文件头()
Dim DocSel As EnvDTE.TextSelection
DocSel = www.sychzs.cnion
DocSel.NewLine()
DocSel.Text =“/******************************************** ******”
DocSel.NewLine()
DocSel.Text = "* &名称:"
DocSel.NewLine()
DocSel.Text = "* &函数:"
DocSel.NewLine()
DocSel.Text = "* ¶m[in]:"
DocSel.NewLine()
DocSel.Text = "* &返回:"
DocSel.NewLine()
DocSel.Text = "* &作者:rk"
DocSel.NewLine()
DocSel.Text = "* &版本:V1.0"
DocSel.NewLine()
DocSel.Text = "* &日期:" + System.DateTime.Now.ToLongDateString
DocSel.NewLine()
DocSel.Text = "********************************************* ******/“
结束子
终端模块
注意:设置快捷键之前,最好先运行一下宏,确定宏的能正确执行后再添加快捷键,
在“工具”→“宏”→“宏资源管理器”中可以找到新添加的FunctionNotes下的DocumentFileHeader,右键运行即可
看看是否有效。
如果不起作用,可能是因为这个:点击打开链接
? 3. 设置快捷键
? ?打开“工具”→“选项”,选择“键盘”,进行以下设置?
???
? 4.效果
/**************************************************** **
* &姓名:
* &功能:
* &参数[输入]:
* &返回:
* &作者:rk
* &版本:V1.0
* &日期:2016 年 1 月 5 日,星期二
**************************************************** ****** */
这只是一个相对简单的宏,向您展示如何使用它。如果您有兴趣编写更强大的宏,
可以参考以下代码:
进口系统
导入 EnvDTE
进口EnvDTE80
进口EnvDTE90
进口EnvDTE90a
进口EnvDTE100
导入系统.诊断
公共模块模块1
私人功能版权所有()
版权所有 = CStr(日期.今天.年份) + "技术保留"
结束功能
私有函数 EMailAddress()
邮箱地址 = "support@www.sychzs.cn"
结束功能
私有函数 AuthorName()
作者姓名=“rk”
结束功能
函数产品名称()
产品名称 = ""
结束功能
私有函数 GenGUIDString() 作为字符串
将 sGUID 调暗为字符串
sGUID = System.Guid.NewGuid.ToString()
sGUID = UCase(sGUID.Replace("-", "_"))
GenGUIDString = sGUID
结束功能
私有函数FileString(ByVal文件名作为字符串)作为字符串
FileString = UCase(文件名.Replace(".", "_"))
UCase(左(www.sychzs.cn, Len(www.sychzs.cn) - 2))
结束功能
子 HeaderFileTemplate()
如果 ActiveDocument.Language = EnvDTE.Constants.dsCPP 则 ' C++
If UCase(Right(www.sychzs.cn, 2)) = ".H" then '头文件
暗淡 sGUID = GenGUIDString()
Dim sFile = FileString(www.sychzs.cn)
调暗镜头 = 0
昏暗的strDesc =“/******************************************** *************************************” + vbLf + _
“*版权(C)”+版权()+vbLf+_
"* 文件名: " + www.sychzs.cn + vbLf + _
"* 当前版本:" + "1.0.0.1" + vbLf + _
"* 作者:" + 作者姓名() + " (" + 电子邮件地址() + ")" + vbLf + _
"* 设计日期: " + FormatDateTime(www.sychzs.cn, 1) + vbLf + _
“*摘要:”+ vbLf + _
"* 修改记录:" + vbLf + _
“*日期版本修饰符修改摘要”+vbLf+vbLf+_
“**************************************************** ** **************************************/" + vbLf + _
“”+vbLf+_
"/**************************************** 头文件********* * **************************/" + vbLf + _
“”+vbLf+_
"/**************************************** 常量和宏******** **** *************************/" + vbLf + _
“”+vbLf+_
"/************************************* 数据类型 ********* *************************/” + vbLf + _
“”+vbLf+_
"/**************************************** 函数声明******** ** *************************/" + vbLf + _
“”+vbLf+_
"/**************************************** 类别定义 ********* **************************/” + vbLf + _
“”+vbLf+_
ActiveDocument.Selection.StartOfDocument(0)
ActiveDocument.Selection.text() = strDesc
结束如果
结束如果
结束子
子 ImplFileTemplate()
如果 ActiveDocument.Language = EnvDTE.Constants.dsCPP 则 ' C++
昏暗格式1 = UCase(Right(www.sychzs.cn, 2))
昏暗格式2 = UCase(Right(www.sychzs.cn, 4))
如果 format1 = ".C" 或者 format2 = ".CPP" 或者 format2 = ".CXX" 那么 ' 实现文件
暗淡描述=“/******************************************** *************************************” + vbLf + _
"*版权(C) " + Copyright() + vbLf + _
"* 文件名: " + www.sychzs.cn + vbLf + _
"* 当前版本:" + "1.0.0.1" + vbLf + _
"* 作者:" + 作者姓名() + " (" + 电子邮件地址() + ")" + vbLf + _
"* 设计日期: " + FormatDateTime(www.sychzs.cn, 1) + vbLf + _
“*摘要:”+ vbLf + _
"* 修改记录:" + vbLf + _
“*日期版本修饰符修改摘要”+vbLf+vbLf+_
“**************************************************** ** **************************************/" + vbLf + _
"/******************************** 条件编译选项和头文件************ ********* ******************/" + vbLf + _
“”+vbLf+_
"/**************************************** 宏、常量****** ** ****************************/" + vbLf + _
“”+vbLf+_
"/************************************* 数据类型 ********* *************************/” + vbLf + _
“”+vbLf+_
"/**************************************** 变量************ ******************************/” + vbLf + _
“”+vbLf+_
"/**************************************** 功能实现******** ** *************************/" + vbLf + _
“”+vbLf+_
"/**************************************** 类实现****** ** **************************/" + vbLf + _
“”+vbLf
ActiveDocument.Selection.StartOfDocument(0)
ActiveDocument.Selection.text = 描述
结束如果
结束如果
结束子
调暗 ParamArr()
功能 StripTabs(ByVal MyStr)
在 InStr(MyStr, vbTab) 时执行<> 0
MyStr = Right(MyStr, Len(MyStr) - InStr(MyStr, vbTab))
循环
StripTabs = 修剪(MyStr)
结束功能
子函数描述()
昏暗retTp
昏暗的雷蒂
如果 ActiveDocument.Language = EnvDTE.Constants.dsCPP 则 ' C++
暗淡标题 = 修剪(ActiveDocument.Selection.text)
'获取函数返回类型。
如果标题 <>“”则
Reti = InStr(标题, " ")
Dim Loc = InStr(标题, "(")
如果 Reti < Loc 那么
retTp = StripTabs(左(标题,Reti))
标头 = 右(标头、Len(标头)- Reti)
结束如果
'获取函数名称。
Loc = InStr(标题, "(") - 1
Dim Loc2 = InStr(标题, ")")
如果 Loc > 0 并且 Loc2 > 0 那么“确保有一个 '(' 和 ')”
Dim fcName = 左(标题,位置)
标头 = 右(标头,Len(标头)- Len(fcName))
'返回类型上有存储类型吗?
修剪(fcName)
如果 InStr(fcName, " ") <> 0 那么
retTp = retTp + Left(fcName, InStr(fcName, " "))
fcName = Right(fcName, Len(fcName) - InStr(fcName, " "))
结束如果
'获取函数参数。
暗淡 iPrm = 0
暗淡 iPrmA = 0
暗淡 prms = 标头
'计算参数数量。
在 InStr(prms, ",") 时执行 <> 0
iPrm = iPrm + 1
prms = 右(prms, Len(prms) - InStr(prms, ","))
循环
'将参数列表存储在数组中。
如果 iPrm > 0 那么 ' 如果有多个参数。
iPrm = iPrm + 1
iPrmA = iPrm
重新调暗参数 (iPrm)
Do While InStr(标题, ",") <> 0
ParamArr(iPrm) = Left(标题, InStr(标题, ",") - 1)
'从第一个参数中删除大括号。
如果 InStr(ParamArr(iPrm), " (") <> 0 则
ParamArr(iPrm) = 右(ParamArr(iPrm), _
Len(ParamArr(iPrm)) - InStr(ParamArr(iPrm), " ("))
修剪(ParamArr(iPrm))
结束如果
标题 = 右(标题,Len(标题)- InStr(标题,“,”))
iPrm = iPrm - 1
循环
ParamArr(iPrm) = 标头
'删除最后一个参数的尾部大括号。
如果 InStr(ParamArr(iPrm), ")") <> 0 则
ParamArr(iPrm) = 左(ParamArr(iPrm), _
InStr(ParamArr(iPrm), ")") - 1)
修剪(ParamArr(iPrm))
结束如果
Else '可能是一个参数。
重新调暗参数 (1)
Header = Right(Header, Len(Header) - 1) ' 去掉第一个大括号。
修剪(标头)
ParamArr(1) = StripTabs(标题)
如果 InStr(ParamArr(1), ")") <> 1 则
ParamArr(1) = 左(ParamArr(1), InStr(ParamArr(1), ")") - 1)
修剪(ParamArr(1))
iPrMA = 1
结束如果
结束如果
'将光标定位在所选文本上方一行。
ActiveDocument.Selection.LineUp()
ActiveDocument.Selection.LineDown()
ActiveDocument.Selection.StartOfLine()
'www.sychzs.cnion = vbLf
暗淡描述=“/******************************************** *************************************” + vbLf + _
"* 函数名称 : " + fcName + vbLf + _
"* 功能描述 : "
'打印参数列表。
最后变暗 = iPrmA
在 iPrmA 的同时进行 <> 0
'从任何参数中删除换行符。
如果 InStr(ParamArr(iPrmA), vbLf) <> 0 则
ParamArr(iPrmA) = 右(ParamArr(iPrmA), _
(Len(ParamArr(iPrmA))-_
InStr(ParamArr(iPrMA), vbLf)))
修剪(ParamArr(iPrmA))
结束如果
ParamArr(iPrmA) = StripTabs(ParamArr(iPrmA))
'如果有2个以上参数,第一个参数将
'have a '(' prepended to it, remove it here:
If iPrmA = Last And Last <> 1 Then
ParamArr(iPrmA) = Right(ParamArr(iPrmA), _
Len(ParamArr(iPrmA)) - 1)
End If
Descr = Descr + vbLf + "* 参 数 : " + _
ParamArr(iPrmA)
iPrmA = iPrmA - 1
Loop
Descr = Descr + vbLf + _
"* 返 回 值 : " + retTp + vbLf + _
"* 作 者 : " + AuthorName() + vbLf + _
"* 设计日期 : " + FormatDateTime(www.sychzs.cn, 1) + vbLf + _
"* 修改日期 修改人 修改内容" + vbLf + _
"*******************************************************************************/" + vbLf
ActiveDocument.Selection.text = Descr
End If
End If
End If
End Sub
End Module
? ? 。