Визуальная студия С++ toggle comment? комментарий, пока не выбрана целая строка?

2 вопроса:

1) ярлык для для переключения комментариев на выделенные строки? Доступно во всех iDE, которые я использовал, начиная с notepad ++

2) ctrl-k, ctrl-c проявляет это поведение (цитируется из какого-то красиво сформулированного):

С#: каждая строка, где какой-либо текст выбранный комментируется в line-start с двойной косой чертой. Если ничего не выбрано, строка, где курсор прокомментирован.

С++: если ничего не выбрано или выбраны полные линии, это ведет себя как указано выше. Однако, если части выбирается строка, и никакие комментарии отсутствуют. выбранный как часть выбора (например, выберите что-то посредине строка кода), то выбор окруженный /* и */.

так как я код на С++, я нахожу это поведение раздражающим - я хочу иметь возможность прокомментировать выделенные строки - любые обходные пути?

Ответы

Ответ 1

Каждая строка, в которой выбран какой-либо текст, комментируется в начале строки с двойным косой чертой. Если ничего не выбрано, будет прокомментирована строка, в которой находится курсор.

В случае многострочного выбора: Мое решение раскомментируется только в том случае, если прокомментированы все строки в выборе. Я нашел его более интуитивным.


Решение:

Инструменты Макросы Макросы IDE...

В Макро Explorer щелкните правой кнопкой мыши по макросам и нажмите Новый проект макроса...

Назовите свой макрос, например. MyMacroProject и нажмите Добавить.

Щелкните правой кнопкой мыши на Module1 в новом проекте макроса в Macro Explorer и нажмите Изменить.

Вставьте это в окно редактора макросов:

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

Сохраните этот файл и закройте окно редактора макросов.

Привяжите свой макрос к ключу:

Инструменты Параметры... Среда Клавиатура

Введите это в Show команды, содержащие: ToggleCommentLine

Выберите Macros.MyMacroProject.Module1.ToggleCommentLine.

Установите ключ нажатием сочетаний клавиш:. , затем нажмите Назначить, затем нажмите ОК.

Enjoy.

Ответ 2

Поведение преднамеренное. Если пользователю потребовалось небольшое временное изменение в одной строке, для которой не требуется переписывать всю строку, используя комбинацию клавиш Ctrl + K, Ctrl + C позволяет ему/ей комментировать только изменение, а не весь линия.

Edit:

Что касается первого вопроса, это одна и та же комбинация клавиш: Ctrl + K, Ctrl + C для переключения любых комментариев, Ctrl + K, Ctrl + U для переключения любых комментариев.

Изменить 2:

Если вы все еще не удовлетворены, получите Visual Assist X из всего томатного программного обеспечения: http://www.wholetomato.com/ Он добавляет дополнительное сочетание ярлыков комментариев к клавишам "/" и "*", когда текст выделен.

Ответ 4

В Visual Studio 2019 вы можете получить практически все функции, которые вы ищете, трижды щелкнув первую строку, а затем перетащив в нижнюю строку. Это выберет полные строки.

Затем используйте Ctrl-K Ctrl-C как обычно. Он вставит //, а не /**/.

Ответ 5

Toggle НЕ ТОЛЬКО, как Toggle On и Toggle Off.

Если я переключаю группу строк, некоторые из которых закомментированы, а другие - нет, то TOGGLE будет комментировать строки, которые ранее не были прокомментированы, и Un-Coment из строки, которая ранее была прокомментирована - с однократным нажатием клавиши.