Ответ 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.