Visual Studio C ++ переключить комментарий?комментировать пока выделена не вся строка? - PullRequest
17 голосов
/ 04 декабря 2010

2 вопроса на самом деле:

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

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

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

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

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

Ответы [ 4 ]

9 голосов
/ 23 сентября 2013

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

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


Решение:

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

В Macro 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

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

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

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

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

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

Установите клавишу на Нажмите клавиши быстрого доступа: . затем нажмите Назначить , затем нажмите OK .

Наслаждайтесь.

2 голосов
/ 11 января 2011

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

Edit:

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

Редактировать 2:

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

0 голосов
/ 15 октября 2017

Если вы хотите изменить сочетание клавиш для переключения комментариев на клавишу ctrl + /.Вы можете горячую команду для Visual Studio и установить его.После перезапуска Visual Studio все работает!

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

0 голосов
/ 25 апреля 2013

Toggle - это НЕ то же самое, что Toggle On и Toggle Off.

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

...