Кто-нибудь знает, есть ли способ в Visual Studio 2010 выделить и прокомментировать строки в файлах CSS, как вы можете, со всеми другими файлами (нажав кнопку)? Возможно, расширение Visual Studio? Комментирование их вручную является громоздким.
В Visual Studio 2010 есть ли способ легко прокомментировать строки в CSS?
Ответ 1
К сожалению, регулярные команды для комментирования и расторжения (Ctrl + K + C и Ctrl + K + U) не работают для CSS. Вместо этого вам нужно будет записать или написать макрос, который сделает это, и прикрепить его к своему собственному ярлыку.
Чтобы прокомментировать выделенный текст (обратите внимание, что это быстро и грязно и поэтому комментирует его как один блок):
Sub CssComment()
DTE.ActiveDocument.Selection.Text = "/*" + DTE.ActiveDocument.Selection.Text + "*/"
End Sub
Обновление
Этот новый ниже работает больше как команда регулярных комментариев и комментарии поэтапно. Это означает, что вам не нужно выбирать текст перед рукой. Это также делает все изменения как одну отменную операцию и проверяет расширение файла, чтобы вы могли назначить его регулярному ярлыку, и он будет работать для всех файлов.
Sub CommentCss()
Dim ts1 As TextSelection = CType(DTE.ActiveDocument.Selection(), EnvDTE.TextSelection)
Dim fileName = DTE.ActiveDocument.FullName
' We should default to regular commenting if we're not editing CSS.
' This allows this macro to be attached to the Ctrl+K+C shortcut
' without breaking existing file format commenting.
If Not fileName.EndsWith(".css") Then
DTE.ExecuteCommand("Edit.CommentSelection")
Return
End If
Dim weOpenedUndo As Boolean = False
If Not DTE.UndoContext.IsOpen Then
DTE.UndoContext.Open("CommentCSS")
weOpenedUndo = True
End If
ts1.StartOfLine(vsStartOfLineOptions.vsStartOfLineOptionsFirstColumn, True)
Dim ep1 As EditPoint2 = ts1.TopPoint.CreateEditPoint()
Dim ep2 As EditPoint2 = ts1.BottomPoint.CreateEditPoint()
While ep1.Line <= ep2.Line
Dim text As String = ep1.GetLines(ep1.Line, ep1.Line + 1)
text = text.Trim()
If Not text.StartsWith("/*") Or Not text.EndsWith("*/") Then
ep1.StartOfLine()
ep1.Insert("/*")
ep1.EndOfLine()
ep1.Insert("*/")
End If
Dim lineBeforeDown As Integer = ep1.Line
ep1.LineDown()
If ep1.Line = lineBeforeDown Then
Exit While
End If
End While
ts1.StartOfLine(vsStartOfLineOptions.vsStartOfLineOptionsFirstColumn, True)
If weOpenedUndo Then
DTE.UndoContext.Close()
End If
End Sub
Обновление для Uncommenting
Этот макрос выполняет обратную задачу. Опять же, он реализован так, что он будет работать для всех документов, если потребуется, путем проверки расширения файла и отсылки к стандартной команде Edit.UncommentSelection
для файлов без CSS.
Sub UncommentCss()
Dim ts1 As TextSelection = CType(DTE.ActiveDocument.Selection(), EnvDTE.TextSelection)
Dim ep1 As EditPoint2 = ts1.TopPoint.CreateEditPoint()
Dim ep2 As EditPoint2 = ts1.BottomPoint.CreateEditPoint()
Dim fileName = DTE.ActiveDocument.FullName
' We should default to regular commenting if we're not editing CSS.
' This allows this macro to be attached to the Ctrl+K+C shortcut
' without breaking existing file format commenting.
If Not fileName.EndsWith(".css") Then
DTE.ExecuteCommand("Edit.UncommentSelection")
Return
End If
Dim weOpenedUndo As Boolean = False
If Not DTE.UndoContext.IsOpen Then
DTE.UndoContext.Open("UncommentCSS")
weOpenedUndo = True
End If
While ep1.Line <= ep2.Line
ep1.StartOfLine()
Dim text As String = ep1.GetLines(ep1.Line, ep1.Line + 1)
text = text.Trim()
If text.StartsWith("/*") And text.EndsWith("*/") Then
Dim epEndOfLine As EditPoint2 = ep1.CreateEditPoint()
epEndOfLine.EndOfLine()
text = text.Substring(2, text.Length - 4)
ep1.ReplaceText(epEndOfLine, text, vsEPReplaceTextOptions.vsEPReplaceTextKeepMarkers Or vsEPReplaceTextOptions.vsEPReplaceTextAutoformat)
End If
Dim lineBeforeDown As Integer = ep1.Line
ep1.LineDown()
If ep1.Line = lineBeforeDown Then
Exit While
End If
End While
ts1.StartOfLine(vsStartOfLineOptions.vsStartOfLineOptionsFirstColumn, True)
If weOpenedUndo Then
DTE.UndoContext.Close()
End If
End Sub
Обновление 18Oct2012
В соответствии с ответом dirq существует расширение, Web Essentials, которое предоставляет комментарии CSS и раком. Я бы рекомендовал использовать это над макросами выше, поскольку он предоставляет другую большую поддержку, помимо ярлыков комментариев комментариев CSS.
Ответ 2
Там доступно расширение, которое работает лучше, чем макрос: Web Essentials. Проверьте это. http://visualstudiogallery.msdn.microsoft.com/6ed4c78f-a23e-49ad-b5fd-369af0c2107f