Vim : XML 텍스트를 "꽤"만들기


33

viXML 텍스트를 "예쁘게"만드는 쉬운 방법이 있습니까?

예를 들면 다음과 같습니다.

나는 이것을 원한다 ..

            <person>
  <name>Nick</name>
 <age>26</age>
         <gender>male</gender>
<occupation>doctor</occupation>
    </person>

이게 ...

<person>
    <name>Nick</name>
    <age>26</age>
    <gender>male</gender>
    <occupation>doctor</occupation>
</person>

다른 모든 것이 실패하면 항상 매크로가 있습니다. qq0dt<jq다음 3@qj@@5k4I<space><esc>j.j.j.. 와우, 그것은 꽤 비밀스러워 보입니다.
Braden Best

답변:


39

나는 이것으로 가장 운이 좋았다.

:%!xmllint --format %

태그에 대해서는 엄격하므로 시작 태그와 닫기 태그가 일치하지 않으면 오류가 발생합니다. 또한 XML 선언이 없으면 파일 맨 위에 XML 선언을 추가합니다.

이 페이지는 작동하지 않지만 다음을 권장합니다.

:set filetype=xml
:filetype indent on
gg=G

나는 그것을 시험해 보았고 다소 효과가있는 것으로 보인다. 완벽하지는 않지만 작업이 완료됩니다.

그것이 잘 작동하지 않으면 파이썬에서 minidom을 사용하여 포맷 할 수 있습니다.

import xml.dom.minidom

xml = xml.dom.minidom.parse(filename)
formatted_xml = xml.toprettyxml()

gg=G명령은 실제로 작동하지 않았습니다. 대신, 그것은 내가 가진 모든 이전 들여 쓰기를 제거했습니다.
Rob Avery IV

예, 같은 것을 찾았습니다. 특정 형식의 서식이 이미 있지만 일반적으로 그렇지 않은 경우 작동하는 것 같습니다. 좀 더 테스트해야합니다.
Nate

1
:%!xmllint --format %잘 작동하는 것 같아서 게시물에 추가했습니다.
Nate

1
@kenny 나는 그것에 대처하기 위해 답을 수정했다
törzsmókus

2
": set ft = xml | %! xmllint --format-"을 수행하여 현재 버퍼에서 작동하도록하고 구문 강조를 설정합니다.
grebulon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.