Domanda

Come posso correggere il rientro dei suoi enormi file html che erano tutti incasinati?

Ho provato il solito < !> quot; gg = G <> quot!; comando , che è quello che uso per correggere il rientro dei file di codice. Tuttavia, non sembra funzionare correttamente sui file HTML. Ha semplicemente rimosso tutta la formattazione.

Ho anche provato a impostare :filetype = xml, per vedere se indurlo a pensare che si trattasse di un file XML sarebbe stato utile, ma non lo ha ancora fatto.

È stato utile?

Soluzione

Con filetype indent on all'interno del mio .vimrc, Vim inserisce i file HTML abbastanza bene.

Esempio semplice con un shiftwidth di 2:

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

Altri suggerimenti

Ci sono diverse cose che devono essere tutte a posto. Solo per riassumere tutti in una posizione:

Imposta la seguente opzione:

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

Quindi sposta il cursore nella parte superiore del file e rientra alla fine: gg =G
Oppure seleziona il testo desiderato per rientrare e premi = per rientrare.

Il problema principale nell'uso del rientro intelligente è che se l'XML (o HTML) si trova su una riga poiché potrebbe finire per tornare da una richiesta di arricciatura, allora gg=G non funzionerà. Invece ho appena sperimentato un buon rientro usando l'ordine ordinato direttamente da VI:

:!tidy -mi -xml -wrap 0 %

Questo in sostanza dice a VI di chiamare in ordine per ripulire un file XML senza avvolgere le linee per adattarle alle linee larghe predefinite di 68 caratteri. Ho elaborato un grande file XML da 29 MB e ci sono voluti 5 o 6 secondi. Immagino che per un file HTML il comando dovrebbe quindi essere:

:!tidy -mi -html -wrap 0 %

Come menzionato nei commenti, tidy è uno strumento di base che puoi trovare su molti sistemi Linux / MacOS di base. Ecco la pagina del progetto nel caso in cui desideri averlo, ma non farlo: HTML Tidy .

Spero che questo possa aiutare.

Come spiega tylerl sopra, imposta quanto segue:

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

Tuttavia!

Nota che in vim 7.4 i tag html html, head, body e alcuni altri sono non rientrati per impostazione predefinita. Ciò ha senso, poiché quasi tutto il contenuto di un file html rientra in tali tag. Se lo desideri davvero, puoi far rientrare questi tag in questo modo:

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

Vedi qui e qui per ulteriori informazioni.

Questa è la mia soluzione che funziona bene per aprire " brutto " HTML in modo ben distanziato:

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

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

La parte successiva aggiunge una nuova riga (Vim pensa che sia un ritorno a capo, sospiro) dopo ogni elemento (>)

Quindi rientrare di nuovo il rientro dell'intero file con =

Quindi deseleziona set hlsearch (dato che ho | wq! fileOut.html nel mio vimrc)

Quindi rimuovi tutte le righe vuote / solo per gli spazi bianchi (vedi qui per ulteriori informazioni, anche questo è doppio escape perché è nella shell)

Puoi anche aggiungere <=> alla fine se non vuoi inserire Vim, ma pulisci semplicemente il file.

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

Nel link sopra hai tutte le informazioni:

  1. Installa
  2. Configura (copia dal primo esempio)
  3. Esegui :call HtmlBeautify()

Fa il lavoro magnificamente!

Hai provato a usare lo script di rientro HTML sul sito Vim?

Ecco una soluzione pesante che ti fa rientrare, oltre a tutta la bella stampa HTML di cui non ti devi preoccupare durante la modifica.

Per prima cosa, scarica Tidy . Assicurati di aggiungere il file binario al tuo percorso, in modo da poterlo chiamare da qualsiasi posizione.

Successivamente, crea un file di configurazione che descriva il tuo sapore HTML preferito. La documentazione non è ottima per Tidy, ma ecco una 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

Salva come tidyrc_html.txt nella tua ftplugin cartella (sotto vimfiles).

Un altro file: aggiungi la seguente riga a (o crea) html.vim, anche in /tidy:

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

Per usarlo, basta aprire un file HTML e digitare /. (Quella <leader> è la chiave <=>.)

Ecco qua! Non è una soluzione rapida, in ogni caso, ma ora sei un po 'meglio attrezzato per modificare quei file HTML enormi e incasinati.

Puoi integrare sia tidy che html-beautify installando automaticamente il plugin vim -autoformat. Dopodiché, puoi eseguire qualunque formattatore sia installato con un solo tasto.

  

Ho provato il solito " gg = G " comando, che è quello che uso per correggere il rientro dei file di codice. Tuttavia, non sembra funzionare correttamente sui file HTML. Ha semplicemente rimosso tutta la formattazione.

Se il formato / rientro automatico di vim gg=G sembra essere " rotto " (come il rientro sinistro di ogni riga), molto probabilmente il plugin di rientro non è abilitato / caricato. Dovrebbe davvero dare un messaggio di errore invece di fare solo un rientro errato, altrimenti gli utenti pensano semplicemente che la funzione di formattazione automatica / rientro sia terribile, quando in realtà è abbastanza buona.

Per verificare se il plug-in rientro è abilitato / caricato, eseguire :scriptnames. Verifica se .../indent/html.vim è nell'elenco. In caso contrario, significa che il plug-in non è caricato. In tal caso, aggiungi questa riga a ~/.vimrc:

filetype plugin indent on

Ora se apri il file ed esegui :filetype plugin indent on, dovresti vedere :e. Quindi eseguire autoindent, che ora dovrebbe eseguire la formattazione / rientro corretta. (Anche se non aggiungerà nuove righe, quindi se tutto il codice html si trova su una sola riga, non verrà indentato).

Nota: se si esegue smartindent sulla riga di comando di vim anziché <=>, è necessario riaprire il file <=>.

Inoltre, non devi preoccuparti delle impostazioni <=> e <=>, non sono rilevanti per questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top