Pergunta

Como faço para corrigir o recuo de seus enormes arquivos de html que foi toda desarrumada?

Eu tentei o habitual " gg = G" comando, que é o que eu uso para corrigir o recuo de arquivos de código. No entanto, ele não parecia certo trabalho em arquivos HTML. Ele simplesmente removeu toda a formatação.

Eu também tentei definindo :filetype = xml, para ver se levando-à pensar que era um arquivo XML ajudaria, mas ainda não fazê-lo.

Foi útil?

Solução

Com filetype indent on dentro da minha .vimrc, Vim travessões arquivos HTML muito bem.

Um exemplo simples com um shiftwidth de 2:

<html>
  <body>
    <p>
    text
    </p>
  </body>
</html>

Outras dicas

Há várias coisas que todos precisam estar no lugar. Apenas para resumir-los todos em um único local:

Definir a opção a seguir:

:filetype indent on
:set filetype=html           # abbrev -  :set ft=html
:set smartindent             # abbrev -  :set si

Em seguida, mova o cursor para o início do arquivo e travessão ao fim: gg =G
Ou selecionar o texto desejado para travessão e hit = para travessão-lo.

O principal problema usando o recuo inteligente é que, se o XML (ou HTML) senta-se em uma linha, uma vez que pode acabar voltando de um pedido onda então gg=G não vai fazer o truque. Em vez disso eu apenas experimentou um bom recuo usando arrumado diretamente chamado de VI:

:!tidy -mi -xml -wrap 0 %

Isso basicamente diz VI para chamar arrumada para limpeza de um arquivo XML não quebra de linhas para fazê-los caber no padrão 68 caracteres linhas de largura. Eu processado um arquivo XML 29MB grande e levou 5 ou 6 segundos. Eu acho que para um arquivo HTML o comando deverá ser:

:!tidy -mi -html -wrap 0 %

Como mencionado nos comentários, tidy é uma ferramenta básica que você poderia encontrar em muitas de base Linux / sistemas MacOS. Aqui é a página do projet no caso de você gostaria de ter, mas não:. HTML Tidy

Espero que isso poderia ajudar.

Como tylerl explica acima, defina o seguinte:

:filetype indent on
:set filetype=html
:set smartindent

No entanto!

Note que no vim 7.4 as tags HTML html, head, body, e alguns outros são não recuado por padrão. Isso faz sentido, como quase todo o conteúdo em um arquivo html cai sob essas tags. Se você realmente quiser, você pode obter essas tags para ser recuado assim:

:let g:html_indent_inctags = "html,body,head,tbody" 

Consulte aqui aqui para mais informações.

Esta é a minha solução que funciona muito bem para a abertura "feio" HTML de uma forma bem espaçadas:

vim fileIn.html -c "set sw=2 | %s/>/>\r/ | execute 'normal gg=G' | set nohlsearch | g/^\\s*\$/d"

O comando sw é porque o meu padrão é 4, o que é demasiado elevado para HTML.

A parte seguinte adiciona uma nova linha (Vim acha que é um retorno de carro, suspiro) depois de cada elemento (>)

Em seguida, re-indent o arquivo inteiro com =

Então > unhighlight (desde que eu tenho set hlsearch no meu vimrc)

Em seguida, retire tudo / vazia linhas somente espaços em branco (ver aqui para mais, também este é duplo escape porque é na casca)

Você pode até adicionar | wq! fileOut.html até o fim, se você não quiser entrar Vim em tudo, mas apenas limpar o arquivo.

Eu uso este script: https://github.com/maksimr/vim-jsbeautify

No link acima, você tem todas as informações:

  1. Instalar
  2. Configure (cópia do primeiro exemplo)
  3. Executar :call HtmlBeautify()

Será que o trabalho lindamente!

Você já tentou usar o script recuo HTML no site da Vim?

Aqui está uma solução peso-pesado que você recebe o recuo, além de todo o HTML bem-impressão que você não necessariamente querem se preocupar enquanto você está editando.

Primeiro, baixe Tidy . Certifique-se de adicionar o binário para o seu caminho, para que possa chamá-lo a partir de qualquer localização.

Em seguida, crie um arquivo de configuração que descreve o seu sabor HTML favorito. Documentação não é grande para Tidy, mas aqui está um visão geral , e uma lista de todas as opções . Aqui está o meu arquivo de configuração:

bare: yes
break-before-br: no
clean: yes
drop-proprietary-attributes: yes
fix-uri: yes
indent-spaces: 4
indent: yes
logical-emphasis: yes
markup: yes
output-xhtml: yes
quiet: yes
quote-marks: yes
replace-color: yes
tab-size: 4
uppercase-tags: no
vertical-space: yes
word-2000: yes
wrap: 0

Save este como tidyrc_html.txt na sua pasta ftplugin (sob vimfiles).

Mais uma file: adicione a seguinte linha (ou criar) html.vim, também em ftplugin:

map <leader>tidy :%! tidy -config ~/vimfiles/ftplugin/tidyrc_html.txt <CR>

Para usá-lo, basta abrir um arquivo HTML, e tipo /tidy. (Isso / é a chave <leader>.)

Não que você vá! Não uma solução rápida, por qualquer meio, mas agora você está um pouco melhor equipado para editar aqueles enormes, arquivos HTML bagunçado.

Você pode integrar tanto arrumado e html-embelezar automaticamente por instalar o plugin vim -autoformat . Depois disso, você pode executar qualquer formatador é instalado com uma única tecla.

Eu tentei o habitual "gg = G" comando, que é o que eu uso para corrigir o recuo de arquivos de código. No entanto, ele não parecia certo trabalho em arquivos HTML. Ele simplesmente removeu toda a formatação.

Se autoformatação / gg=G travessão do vim parece ser "quebrado" (como deixou o recuo cada linha), provavelmente o plugin travessão não está habilitado / carregado. Ele deve realmente dar uma mensagem de erro em vez de apenas fazer o mal recuo, caso contrário, os usuários só acho que o recurso de AutoFormatação / o recuo é horrível, quando na verdade é muito bom.

Para verificar se o plugin travessão está habilitado / carregado, :scriptnames executado. Veja se .../indent/html.vim está na lista. Se não, então isto significa que o plug-in está não carregado. Nesse caso, adicionar esta linha ao ~/.vimrc:

filetype plugin indent on

Agora, se você abrir o arquivo e :scriptnames executar, você deve ver .../indent/html.vim. Em seguida, execute gg=G, que deve fazer o correto autoformatação / travessão agora. (Embora ele não vai adicionar novas linhas, por isso, se todo o código html é em uma única linha, não vai ser recuado).

. Nota: Se você estiver executando :filetype plugin indent on na linha de comando vim em vez de ~/.vimrc, você deve re-abrir o :e arquivo

Além disso, você não precisa se preocupar com configurações autoindent e smartindent, eles não são relevantes para isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top