Come faccio a ripulire un file HTML rientro in VI?

Come posso risolvere il rientro del suo enorme file html che era tutto incasinato?

Ho provato il solito “gg=G” comando, che è quello che uso per fissare il rientro di file di codice. Tuttavia, non sembra di lavorare con i file HTML. Semplicemente rimuovere tutta la formattazione.

Ho provato anche l’impostazione :filetype = xml, per vedere se ingannare nel pensare che questa era un file XML sarebbe di aiuto, ma ancora non l’ha fatto.

InformationsquelleAutor mmcdole | 2009-05-02



10 Replies
  1. 85

    Con filetype indent on all’interno del mio .vimrc, Vim rientri file HTML abbastanza bene.

    Semplice esempio con un shiftwidth di 2:

    <html>
      <body>
        <p>
        text
        </p>
      </body>
    </html>
    • Copia e incolla il codice html di questa pagina domande in un file html. Aprire con VIM, tipo “set smartindent”, quindi “gg=G” e non risolve il rientro del file.
    • A me funziona. set ft=html<cr>set si<cr>gg=G<cr>. Formati di questa pagina abbastanza bene.
    • Ha fatto un po ‘ di armeggiare, sembra che in realtà è “filetype sull ‘” che fa la magia.
    • +1 verificato che “filetype trattino on/off” interruttori di magic on o off.
    • Sì, dopo l’impostazione smart trattino, filetype=html, e e filetype ident su di esso ha funzionato per me.
    • Questo è cool, ma non fa esattamente quello che voglio. Voglio che ogni nuovo tag per essere di un livello più profondo, ma un <a> ambito di un <li> non è rientrata. Vado a vedere se posso ottenere ciò che voglio da l’alternativa vim script. Grazie per la risposta!!
    • Da chovy.com/web-development/fix-indentation-and-tabs-in-vim scoperto che avevo bisogno di ricaricare il file con :e dopo filetype rientro sulla.
    • Nota che in vim 7.4 predefinito impostazioni di rientro sarà , non per questo esempio, come html, body, e p non sono rientrate per impostazione predefinita. Vedere questa risposta.
    • vim default rientro è bene. Mi piace questo. Ma quando installo <a href=”matchtagvim.org/scripts/script.php?script_id=3818>matchtag</a> questa caratteristica piacevole è andato. Non so il perché. Ho rimosso matchtag ma non arriva il precedente aspetto piacevole. vedere questa corrente di rientro nel mio vim tavolo di montaggio.co/HeQ7RUS.png

  2. 167

    Ci sono diverse cose che devono essere a posto. Per riassumere tutto in un’unica posizione:

    Impostare l’opzione seguente:

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

    Quindi spostare il cursore all’inizio del file e il trattino alla fine: gg =G

    O selezionare il testo desiderato per il rientro e premere = per lo trattino.

    • molto meglio concisa risposta che il più votato per uno di cui sopra…
    • grazie, ma per me non funziona.. Questo è il contenuto del file: pastebin.com/gagia8W2 . Il file si chiama home.html. Non ho alcun problema per il rientro .i file php. Qui hai il mio .vimrc: pastebin.com/FAJ0MCA9
    • C’è un modo posso impostare questo nel .vimrc? Non voglio dire che ogni volta che apro un file HTML che si tratta di un file HTML. Grazie mille per il gg,=,G di scelta rapida. Davvero a portata di mano.
    • Nota che in vim 7.4 predefinito impostazioni di rientro sarà , non per questo esempio, come html, body, e p non sono rientrate per impostazione predefinita. Vedere questa risposta.
    • smartindent non è necessario. Inoltre è sintonizzato per C e C++, io preferisco usare più generale autoindent invece.
    • Funziona alla grande con vim7.4. @tylerl c’è un modo per rendere questa configurazione permanente per i file html in 7.4?
    • :set smartindent funzionato bene per me in combinazione con 1G v G $ = (vai alla prima linea, è possibile impostare la modalità visiva, vai all’ultima riga, vai alla fine dell’ultima riga, smart trattino). seleziona tutto il testo e poi rientri.
    • Testato con Vim 8 e funziona senza problemi.
    • Importante avvertenza: se si esegue questi comandi di vim riga di comando, è necessario ri-aprire il file con :e. Questo non è necessario se li mettono in ~/.vimrc

  3. 51

    Il problema principale utilizzando il rientro smart è che se il file XML (o HTML) si siede su una sola linea, come si può finire di ritorno da un ricciolo richiesta, quindi gg=G non farà il trucco. Invece ho appena sperimentato un buon rientro utilizzando ordinata chiamato direttamente da VI:

    :!tidy -mi -xml -wrap 0 %

    Questo dice fondamentalmente VI a chiamare in ordine alla pulitura di un file XML non avvolgere le linee per renderle idonee all’impostazione predefinita 68 caratteri linee. Ho elaborato un ampio 29MB file XML e ci sono voluti 5 o 6 secondi. Credo che per un file HTML il comando dovrebbe essere:

    :!tidy -mi -html -wrap 0 %

    Come accennato nei commenti, tidy è uno strumento di base che si potrebbe trovare su molti base Linux /MacOS sistemi. Qui è il projet pagina nel caso in cui si desidera si aveva, ma non: HTML Tidy.

    Spero che questo possa aiutare.

    • Non credo che l’html è necessario, come è di default html
    • D’accordo con te @Isieber. Tuttavia, credo che la rende più facile capire la logica e potrebbe anche essere considerata una buona pratica da alcune persone.
    • FYI, in ordine strozzatori se il codice HTML include SVG (ad esempio, grafici, etc.).
    • Sì, se il codice html è su una linea, il vim rientro comando non funziona!
    • Che cosa è in ordine diverso da una parola in un dizionario? Questa non è una risposta completa senza collegamento al progetto.
    • viene fornito con lo standard Unix-come i sistemi operativi. Ho cercato con successo questa risposta sul mio Mac senza aver mai sentito parlare di tidy.
    • non senza brew install tidy-html5 non l’hai fatto. E questo è il punto del mio commento. Per non dire “si prega di fare del mio Googling per me”. Ma per dire, la risposta deve essere meglio. Ed è ancora vero. Anche se sono stato in grado di iniziare a utilizzare Ordinata a causa di questa risposta.
    • Ho commentato la mia risposta, hai reso il tuo punto di vista:)
    • che sistema usi? “ $ ordinata –versione HTML Tidy per Mac OS X rilasciata il 31 ottobre 2006 – Apple Inc. costruire 15.18.1 “
    • Così ho sicuramente usato tidy senza un Homebrew di installazione. E ‘ molto probabile che tipiche distribuzioni Linux non venire con Ordine, che sarebbe utile info per la presente trattazione.

  4. 46

    Come tylerl spiega sopra, impostare le seguenti:

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

    Però!!!

    Nota che in vim 7.4 il tag html html, head, body, e alcuni altri sono non rientrato per impostazione predefinita. Questo ha senso, come quasi tutto il contenuto in un file html cade sotto i tag. Se si desidera, è possibile ottenere questi tag per essere rientrata in questo modo:

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

    Vedere qui e qui per ulteriori informazioni.

    • questo è il vincitore nel mio libro! Con Vim 7.4 su Windows e questo lavoro fantastico! 😀
  5. 11

    Questa è la mia soluzione che funziona bene per l’apertura di “brutto” HTML in un ben distanziati modo:

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

    Il sw comando è perché il mio di default è 4, che è troppo alto per HTML.

    La parte successiva aggiunge un carattere di newline (Vim si pensa sia un ritorno a capo, sigh) dopo ogni elemento (>)

    Poi ri-trattino l’intero file con =

    Poi unhighlight > (dal momento che ho set hlsearch nel mio vimrc)

    Quindi rimuovere tutti di vuoto, di spazio-solo linee (vedi qui per di più, anche questo è a doppio sfuggito perché è in shell)

    È anche possibile aggiungere | wq! fileOut.html alla fine se non si desidera immettere Vim a tutti, ma solo di ripulire il file.

    • Neat soluzione! L’ho modificata per :%s/>\s*/>\r/g (aggiunto un g per sostituzione globale, e \s* togliere finale spazio). Ho anche aggiunto :%s/</\r</g per aggiungere una nuova riga prima della parentesi aperta. Altrimenti tag come <td>foo</td> sarà diviso come <td> e foo</td>.
    • Fair punto, ho globale sostituire attivata per impostazione predefinita, che è perché non è nella mia soluzione.
  6. 6

    Io uso questo script:
    https://github.com/maksimr/vim-jsbeautify

    Nel link qui sopra avete tutte le informazioni:

    1. Installare
    2. Configurare (copia dal primo esempio)
    3. Eseguire :call HtmlBeautify()

    Fa il lavoro perfettamente!

    • nota: questo richiede nodejs e npmjs.org/package/js-beautify
    • haha, perché si desidera utilizzare nodo + js per pulire html in vim, che ha avuto questa capacità di builtin per più di nodo esiste anche… vacilla la mia mente.
    • Builtin vim non è buono…
    • oh mio, oh mio, perchè hanno un nodo in tutto il mondo…
  7. 4

    Avete provato a usare il codice HTML rientro script Vim sito?

    • +1, non ho visto che. Sarebbe bello se non ho bisogno di eseguire uno script, ma sembra che questo potrebbe essere l’unico modo.
    • Questo script è deprecato ora, e una nuova versione viene fornito con vim (es. /usr/share/vim/vim74/indent/html.vim). “Lug 2014 04: Vim 7.4.356 o poi include un discendente di questo script (ufficiale script è ora mantenuto da Bram e comprende le modifiche di massa)”
  8. 4

    Ecco un peso soluzione che si ottiene il rientro, oltre a tutto il codice HTML che pretty-printing non necessariamente preoccuparsi, mentre si sta modificando.

    In primo luogo, scaricare In ordine. Assicurarsi di aggiungere il binario per il percorso, in modo che è possibile chiamare da qualsiasi luogo.

    Avanti, creare un file di configurazione che descrive il vostro preferito HTML sapore. La documentazione non in Ordine, ma qui è un panoramica, e un elenco di tutte le opzioni. Ecco il mio file di configurazione:

    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

    Salvare questo come tidyrc_html.txt nel ftplugin cartella (in vimfiles).

    Un altro file: aggiungere la seguente riga (o creare) html.vim, anche in ftplugin:

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

    Per utilizzarlo, basta aprire un file HTML, e il tipo di /tidy. (Che / è il <leader> chiave.)

    Ci si va! Non è una soluzione rapida, con qualsiasi mezzo, ma ora si sta un po ‘ meglio attrezzata per la modifica di quelle enormi, incasinata file HTML.

  9. 0

    Ho provato il solito “gg=G” di comando, che è quello che uso per fissare il rientro di file di codice. Tuttavia, non sembra di lavorare con i file HTML. Semplicemente rimuovere tutta la formattazione.

    Se vim formattazione automatica/indent gg=G sembra essere “rotto” (come rientro a sinistra di ogni riga), più probabile il rientro plugin non è abilitato/caricato. Si dovrebbe davvero dare un messaggio di errore, invece di fare male il rientro, in caso contrario gli utenti basti pensare alla formattazione automatica e rientro caratteristica è terribile, quando in realtà è piuttosto buona.

    Per verificare se il rientro plugin è abilitato/caricato, eseguire :scriptnames. Vedere se .../indent/html.vim è nell’elenco. Se non, allora significa che il plugin non viene caricato. In questo caso, aggiungere questa riga al ~/.vimrc:

    filetype plugin indent on

    Ora, se si apre il file e l’esecuzione :scriptnames, si dovrebbe vedere .../indent/html.vim. Quindi eseguire gg=G, che dovrebbe fare la corretta formattazione automatica/rientro ora. (Anche se non aggiungere a capo, quindi se tutto il codice html è su una sola linea, non sarà rientrato).

    Nota: se si esegue :filetype plugin indent on il vim riga di comando invece di ~/.vimrc, è necessario ri-aprire il file :e.

    Anche, non c’è bisogno di preoccuparsi di autoindent e smartindent impostazioni, non sono rilevanti per questo.

Lascia un commento