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

时间:2010-12-03 23:09:34

标签: c++ visual-studio-2010 comments toggle

实际上有两个问题:

1)所选线路上 切换评论 的快捷方式?适用于我用notepad ++

开始使用的所有iDE

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

  

C#:某些文字所在的每一行   选中的评论是在   以双斜线开头。如果   没有选择,行在哪里   光标是评论。

     

C ++:如果没有选择任何内容或   选择完整的行,它   表现如上。但是,如果部分   选择一行,没有评论   选择作为选择的一部分(例如   在中间选择一些东西   代码行),然后选择   被/ *和* /包围。

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

6 个答案:

答案 0 :(得分:9)

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

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


解决方案:

工具 - > - > 宏IDE ...

宏资源管理器中右键单击并单击新建宏项目...

为您的宏命名,例如 MyMacroProject ,然后点击添加

右键单击 Macro Explorer 中新宏项目中的 Module1 然后点击修改

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

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

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

将宏绑定到一个键:

工具 - &gt; 选项...... - &gt; 环境 - &gt;的键盘

将此键入显示包含以下内容的命令: ToggleCommentLine

选择Macros.MyMacroProject.Module1.ToggleCommentLine。

处设置按键快捷键:。 ,然后点击分配,然后点击确定

享受。

答案 1 :(得分:1)

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

编辑:

对于问题一,它是相同的快捷键对:Ctrl + K,Ctrl + C切换任何注释,Ctrl + K,Ctrl + U切换任何注释。

编辑2:

如果您仍然不满意,请从整个番茄软件中获取Visual Assist X:http://www.wholetomato.com/ 当文本突出显示时,它会向“/”和“*”键添加一个额外的注释快捷方式。

答案 2 :(得分:0)

如果您想更改将注释切换为ctrl + /键的快捷键。您可以为Visual studio命令并安装它。重新启动Visual Studio后,它就可以了!

https://marketplace.visualstudio.com/items?itemName=JustinClareburtMSFT.HotCommandsforVisualStudio

答案 3 :(得分:0)

在Visual Studio 2019中,您可以通过双击第一行然后将其拖到最底下来获得几乎所需的功能。这将选择整行。

然后照常使用Ctrl-K Ctrl-C。它将插入//而不是/**/

答案 4 :(得分:0)

有一个扩展程序具有更“自然”的切换注释体验。它不会注释空白行,但是会取消注释其中包含空白行的选定文本块。

请注意,这是默认的键绑定, Ctrl + / 与VS 2019中的命令冲突,因此在安装时不会进行设置,但是文档显示您如何更改它。

https://marketplace.visualstudio.com/items?itemName=munyabe.ToggleComment

答案 5 :(得分:-2)

切换IS与切换打开和切换关闭不同。

如果我切换一组行 - 其中一些被注释掉,而其他行则没有, 然后一个TOGGLE会注释掉以前没有注释掉的行,然后取消注释掉先前已注释掉的行 - 用单键击。