visual studio C++切换评论?注释而不是整行被选中?

Mr_*_*s_D 18 c++ comments toggle visual-studio-2010

实际上有2个问题

1)在所选行上切换评论的快捷方式?适用于我用notepad ++开始使用的所有iDE

2)ctrl-k, ctrl-c展品的这种行为(引自某个地方措辞得很好):

C#:选择某些文本的每一行都在line-start上用双斜杠进行注释.如果未选择任何内容,则注释光标所在的行.

C++:如果未选择任何内容或选择完整行,则其行为与上述相同.但是,如果选择了部分行,并且未选择任何注释作为选择的一部分(例如,选择代码行中间的某些内容),则选择将被/*和*/包围.

因为我在C++中编码,我发现这种行为很烦人 - 我希望能够注释掉部分选中的行 - 任何变通方法?

ch0*_*kee 9

选择某些文本的每一行在line-start处以双斜杠进行注释.如果未选择任何内容,则会注释光标所在的行.

如果是多行选择: 仅当选择中的所有行都被注释时,我的解决方案才会取消注释.我发现它更直观.


解:

工具 - > - > 宏IDE ...

Macro Explorer中右键单击Macros,然后单击New Macro Project ...

为例如MyMacroProject命名宏,然后单击" 添加".

Macro Explorer中右键单击新宏项目中的Module1, 然后单击Edit.

将其粘贴到宏编辑器窗口中:

Option Strict Off
Option Explicit Off
Imports EnvDTE
Imports System.Text.RegularExpressions

Public Module Module1
    Sub ToggleCommentLine()
        Dim sel As TextSelection = DTE.ActiveDocument.Selection

        Dim firstLine As Integer = sel.TopPoint.Line
        Dim lastLine As Integer = sel.BottomPoint.Line

        sel.GotoLine(firstLine, True)
        sel.LineDown(True, lastLine - firstLine)
        sel.EndOfLine(True)

        'we un-comment only if there is no commented line
        Dim allLinesCommented As Boolean = True

        Dim lineIndex As Integer = firstLine
        While allLinesCommented And (lineIndex <= lastLine)
            sel.GotoLine(lineIndex, True)
            allLinesCommented = Regex.IsMatch(sel.Text, "^\s*//.*$")
            lineIndex += 1
        End While

        'iterate over the lines
        For lineIndex = firstLine To lastLine
            sel.GotoLine(lineIndex, True)
            Dim line As String = sel.Text
            Dim m As Match = Regex.Match(line, "^(\s*)(//)(.*)$")
            If allLinesCommented Then
                sel.Text = m.Groups(1).Value & m.Groups(3).Value
            ElseIf Not m.Success Then
                sel.StartOfLine(vsStartOfLineOptions.vsStartOfLineOptionsFirstColumn)
                sel.Text = "//"
            End If
        Next

        'select all the affected lines
        sel.GotoLine(firstLine, True)
        sel.LineDown(True, lastLine - firstLine)
        sel.EndOfLine(True)
    End Sub
End Module
Run Code Online (Sandbox Code Playgroud)

保存此文件并关闭宏编辑器窗口.

将宏绑定到一个键:

工具 - > 选项... - > 环境 - > 键盘

显示命令中键入以下内容: ToggleCommentLine

选择Macros.MyMacroProject.Module1.ToggleCommentLine.

按快捷键处设置一个键:.,然后单击" 分配",再单击" 确定".

请享用.


Cas*_*sey 2

该行为是故意的。如果用户需要对单行进行微小的临时更改,而不需要重写整行,则使用 Ctrl+K、Ctrl+C 快捷键对可以让他/她仅注释掉更改而不是整个行线。

编辑:

至于问题一,它是相同的快捷键对:Ctrl+K、Ctrl+C 打开任何评论,Ctrl+K、Ctrl+U 关闭任何评论。

编辑2:

如果您仍然不满意,请从 Whole Tomato 软件获取 Visual Assist X:http://www.wholetomato.com/ 它会在文本突出显示时添加一个附加注释快捷方式映射到“/”和“*”键。