Каждая строка, в которой выделен какой-либо текст, комментируется в начале строки двойной косой чертой. Если ничего не выбрано, строка, в которой находится курсор, прокомментирована.
В случае многострочного выбора:
Мое решение раскомментируется, только если все строки в выделении закомментированы. Я нашел это более интуитивным.
Решение:
Инструменты -> Макросы -> Макросы 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 .
Наслаждайтесь.