문제

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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top