2012-04-03 2 views
18

현재 줄 바꿈이없는 거대한 HTML 파일이 있으며 한 줄에 나타납니다.Vim에서 HTML 서식 지정 및 들여 쓰기

vim (특히 macvim)에서 포맷하고 싶습니다. 나는 다음 옵션을 시도했지만 그들 중 누구도 나를 위해 일하지 못했습니다.

  • 텍스트를 선택하고 =를 눌렀습니다. 이것은 자동으로 코드를 의도합니다. 그러나 전체 코드가 한 줄에 있기 때문에 아무 것도하지 않습니다.
  • 이 플러그인을 사용했습니다 http://www.vim.org/scripts/script.php?script_id=3613 이런 종류의 작동은하지만 현재 태그에 대해서만 줄 바꿈을 삽입합니다. 전체 파일 형식 지정을 원합니다.

플러그인을 사용하거나 다른 방법으로이 작업을 수행 할 수 있습니까?

감사합니다.

+2

가능한 복제본 [VI에서 HTML 파일의 들여 쓰기를 정리하는 방법은 무엇입니까?] (http://stackoverflow.com/questions/815548/how-do-i-tidy-up-an-html-files-indentation -in-vi) –

답변

37

시작하는 방법 중 하나는 모든 태그를 각자의 줄에 나누는 것입니다. <\/[^>]*> -

:s/<[^>]*>/\r&\r/g 
:g/^$/d 

당신은 < 또는 > 문자 (예 : 잘못된 HTML, 자바 스크립트 비교 연산자, CSS 직계 후손 선택기 부분)이 제대로 작동하지 않고 그냥 끝 태그를하고 같은 것을로 전환 할 수있는 부동 한 경우 . 어쨌든 견고한 시작을 제공합니다. 이것은이 생산

<!DOCTYPE html><html><head><title>hello</title></head><body>world</body></html> 

이 같은 이상화 된 문서와

, :

데모

다음

<!DOCTYPE html> 
<html> 
<head> 
<title> 
hello 
</title> 
</head> 
<body> 
world 
</body> 
</html> 

= 당신이 원하는 무엇을 생산할 예정 :

<!DOCTYPE html> 
<html> 
    <head> 
     <title> 
      hello 
     </title> 
    </head> 
    <body> 
     world 
    </body> 
</html> 
+0

나는 당신의 접근 방식을 좋아합니다. 하지만 한 가지 문제가 있습니다. ':/<[^>] *>/\ r & \ r/g'put 명령은 새 행의 첫 번째 태그 만 넣습니다. 재귀 적으로 실행 가능합니까? – Sudar

+0

마지막에'/ g '을 생략했다고 가정합니다. –

+0

아니요, 저는/g을 끝내지 않았습니다. 첫 번째 교체 후 행 수가 바뀌기 때문에 계속되지는 않습니다. 나는 심지어 당신이 가지고있는 샘플 html에 그것을 시도했다 – Sudar

0

깔끔한 유틸리티 인 as described in this answer을 사용하는 것이 좋습니다.

좋은 도구가 이미 더 나은 결과를 위해이 작업

+0

불행히도, 깔끔한 것은 각 줄을 새 줄에 넣지 않으며, 그렇게하지 못하도록 구성 할 수도 없습니다. 예를 들어, ''은 분할되지 않습니다 (실제로 원래 문서에서 분리 된 경우 압축됩니다). – cemper93

+0

대단히 좋습니다. 실제로 여기에서 직면하게 될 많은 HTML 유효성 확인 문제가 있습니다. 기지로 깔끔히 사용하면 올바른 경로와 같은 냄새가납니다. 거기에서 서식과 들여 쓰기. –

3

위해 작성되었습니다 당신은 외부 전문 형식의 프로그램을 사용해야합니다.

플러그인을 설치하면 tidyhtml-beautify을 자동으로 통합 할 수 있습니다. 그런 다음 한 번의 키 입력으로 설치된 포맷터를 실행할 수 있습니다.

+0

요즘 언급 한 vim-autoformat 애드온을 사용하고 있습니다. – Sudar

관련 문제