Visual Studio에서 자동 완성 된 닫기 태그를 이동하는 방법
-
03-07-2019 - |
문제
Visual Studio가 자동 완성 된 닫기 태그를 단어 (또는 그 이상)로 오른쪽으로 이동시키고 싶습니다. 예를 들어 다음 HTML이 주어지면 :
<p>I need to emphasize some text.</p>
내가 입력하면 <em>
"강조"라는 단어 전에 Visual Studio는 다음과 같은 자동 완성됩니다.
<p>I need to <em></em>emphasize some text.</p>
그런 다음 폐쇄를 움직여야합니다 </em>
내가 원하는 것을 얻으려면 :
<p>I need to <em>emphasize</em> some text.</p>
Visual Studio가 마지막 단계를 자동으로 수행하는 방법이 있습니까?
해결책
당신의 질문은이 기능이 존재한다면 얼마나 멋진 지 생각하게되었습니다. 운 좋게도 Vs에서 매크로로 구현하는 것은 매우 간단했습니다. 아래는 매크로 코드입니다. VS의 사용자 정의 도구를 사용하여 CTRL+Alt+에 쉽게 바인딩 할 수 있습니다.
(메모: 난 그냥 금요일 저녁이라는 것을 빨리 함께 던졌어)
Sub MoveClosingTag()
Dim ts As EnvDTE.TextSelection = CType(DTE.ActiveDocument.Selection(), EnvDTE.TextSelection)
Dim start As EditPoint = ts.ActivePoint.CreateEditPoint()
Dim tag As String
ts.WordRight(True)
If ts.Text = "</" Then
Do Until ts.ActivePoint.AtEndOfLine
ts.CharRight(True)
If ts.Text.EndsWith(">") Then Exit Do
Loop
tag = ts.Text
If tag.EndsWith(">") Then
ts.Delete()
ts.WordRight(False)
ts.Insert(tag, EnvDTE.vsInsertFlags.vsInsertFlagsCollapseToStart)
Else
ts.MoveToPoint(start)
End If
Else
ts.MoveToPoint(start)
End If
End Sub
다른 팁
나는 이것이 가능하지 않다고 생각합니다. 그러나 자동으로 닫히는 HTML 태그를 구성 할 수 있습니다.
도구 -> 옵션 -> 텍스트 편집기 -> html-> 형식 -> "태그 특정 옵션"버튼 -> 클라이언트 html 태그 -> em-> 닫기 태그 -> 닫는 태그 없음
또한 폐쇄 Tagis를 사소하지 않은 상태로 자동으로 이동하는 것을 고려하십시오 (단어 경계는 무엇입니까?) 매우 특별한 사용 사례 만 포함합니다 (예를 들어 하나의 단어 만 강조 표시해야합니다).
열심히 일하는 것에 대한 @w4g3n3r에 소품. 나는 매크로를 약간 수정하여 공간에서 더 잘 연주했습니다.
참고 : 나는 그것을 발견했다 CTRL+.
이것의 바로 가기 키로 잘 작동합니다. 당신의 오른쪽 반지 손가락은 이미 있습니다 .
KEY 사용 케이스의 키는 원래 설명했습니다.
Sub MoveClosingTag()
Dim ts As EnvDTE.TextSelection = CType(DTE.ActiveDocument.Selection(), EnvDTE.TextSelection)
Dim start As EditPoint = ts.ActivePoint.CreateEditPoint()
Dim tag As String
ts.WordRight(True)
If ts.Text = "</" Then
Do Until ts.ActivePoint.AtEndOfLine
ts.CharRight(True)
If ts.Text.EndsWith(">") Then Exit Do
Loop
tag = ts.Text
If tag.EndsWith(">") Then
ts.Delete()
Dim pos As Integer
pos = ts.CurrentColumn
ts.FindPattern(">", vsFindOptions.vsFindOptionsRegularExpression)
If ts.CurrentColumn = pos Then
ts.WordRight(False)
ts.FindPattern(">", vsFindOptions.vsFindOptionsRegularExpression)
End If
ts.Insert(tag, EnvDTE.vsInsertFlags.vsInsertFlagsCollapseToStart)
Else
ts.MoveToPoint(start)
End If
Else
ts.MoveToPoint(start)
End If
End Sub