[xml] Vim에서 일치하는 XML 태그로 이동

Vim %연산자는 일치하는 괄호, 주석 끝 및 기타 몇 가지로 이동합니다. 그러나 XML 태그 (또는 다른 태그)는 필자가 아는 한 일치하지 않습니다.

Vim을 사용하여 일치하는 XML 태그로 이동하는 가장 좋은 방법은 무엇입니까?

참고 : 나는 무엇 정말 하고 싶은 수동으로 일치하는 태그를 찾고없이 XML 파일의 섹션을 중복입니다.



답변

matchit.vim이라는 vim 플러그인이 있습니다. http://www.vim.org/scripts/script.php?script_id=39에서 찾을 수 있습니다 . 그것은 당신이 묘사하는 정확한 목적과 거의 비슷합니다.

이를 설치하고 커서를 태그의 본문에 놓고 (<>가 아니라면 일치) 다른 태그로 이동하려면 %를 누르십시오. 스크립트 페이지를 참조하여 일치하는 내용을 찾으십시오.


답변

추가 플러그인없이이 작업을 수행 할 수 있습니다.

  • 태그 위에 커서 놓기
  • vat -(외부) 태그를 선택하고 끝에 커서를 놓습니다.
  • 당신이 당신의 선택을했으면 당신은 상단과 하단으로 전환 할 수 있습니다 o( 마이클 그루버 주에 기반 업데이트 )
  • cy시각 모드를 떠나기 위해 변경 또는 복사 또는 탈출 …

또 다른 유용한 작업은 다음과 같습니다 vit.-태그의 내용을 선택합니다 (내부).

업데이트 (@elrado 덕분에) 예 : vito태그의 내부 내용을 선택하고 선택한 텍스트의 시작 부분에 커서를 놓습니다.

참조 : /superuser/182355/how-can-i-select-an-html-tags-content-in-vim

Vim 참조 (이 사실을 지적한 @Geek 덕분에) :

:help visual-operators

당신은 얻을 것이다:

4. Operating on the Visual area             *visual-operators*

The objects that can be used are:
    ...
    at  a <tag> </tag> block (with tags)        |v_at|
    it  inner <tag> </tag> block            |v_it|
    ...


답변

OP는 그가 실제로하고 싶은 것은 일치하는 태그를 찾을 필요없이 XML의 섹션을 복사하는 것이라고 밝혔다. 이는 일반 모드에서 쉽게 수행됩니다 yat<motion>p.이 태그는 텍스트를 일치시키고 일치하는 태그를 포함시킨 다음 붙여 넣습니다. yit<motion>p거의 동일하지만 외부 태그는 포함되지 않습니다.

문자열에서 ‘y’는 물론 일반 모드 “yank”명령입니다. ( :help y)

a또는 시각적 선택 i과 같이 y또는 내부에서 조작자 후에 오브젝트 선택에 사용될 수 있습니다 . 뒤의 기호 a또는 i선택해야 할 항목을 지정합니다. t여기에 사용 된 객체 유형 은 SGML 태그를 나타냅니다. ( :help object-select).

물론 <motion>당신이 선택한 수단으로 어딘가로 이동 p하고 그 위치에 구부러진 텍스트를 넣는 것을 의미합니다 .


답변

“yank”, “object-select”(태그 선택) 및 “마지막으로 기울어 진 텍스트로 건너 뛰기”를 사용하는 비결입니다.

yit`] 

태그를 닫기 전에 오른쪽으로 이동

yit

태그를 연 후 바로 점프

참고 : 이것은 기본 레지스터의 내용을 변경합니다


답변