Wie ordentlich ich eine HTML-Datei der Einzug in VI up?
-
03-07-2019 - |
Frage
Wie behebe ich den Einzug seiner großen HTML-Dateien, die alle vermasselt wurde?
Ich habe versucht, die üblichen “ gg = G“Befehl , das ist, was ich verwende, um die Vertiefung von Code-Dateien zu beheben. Doch es schien nicht richtig auf HTML-Dateien zu arbeiten. Es ist einfach entfernt alle Formatierungen.
Ich habe auch versucht Einstellung :filetype = xml
, um zu sehen, ob es in trickst das Denken eine XML-Datei wurde helfen würde, aber es hat immer noch nicht tun.
Lösung
Mit filetype indent on
in meinem .vimrc
, Vim Einzüge HTML-Dateien ganz gut.
Einfaches Beispiel mit einem shiftwidth
von 2:
<html>
<body>
<p>
text
</p>
</body>
</html>
Andere Tipps
Es gibt mehrere Dinge, die alles an seinem Platz sein müssen. Nur zusammenzufassen, sie alle an einem Ort:
Stellen Sie die folgende Option:
:filetype indent on
:set filetype=html # abbrev - :set ft=html
:set smartindent # abbrev - :set si
Dann entweder den Cursor an den Anfang der Datei und indent zum Ende bewegen: gg
=G
Oder den gewünschten Text auswählen einrücken und drücken Sie = es einrücken.
Das Hauptproblem des Smart-Einzug ist, dass, wenn die XML (oder HTML) auf einer Linie liegt, wie es zurück von einem curl Anfrag kann am Ende kommt dann gg=G
nicht den Trick. Stattdessen habe ich gerade erleben eine gute Vertiefung mit ordentlich direkt aufgerufen von VI:
:!tidy -mi -xml -wrap 0 %
Das sagt im Grunde VI zur Reinigung ordentlich rufen Einwickeln einer XML-Datei nicht die Zeilen, um sie auf dem Standard 68 Zeichen breite Linien passen zu machen. Ich verarbeitet eine große 29MB XML-Datei, und es dauerte 5 oder 6 Sekunden. Ich denke, für eine HTML-Datei sollte der Befehl daher sein:
:!tidy -mi -html -wrap 0 %
Wie in den Kommentaren erwähnt, tidy
ist ein grundlegendes Werkzeug, das Sie auf vieler Basis Linux / MacOS-Systemen finden konnten. Hier die Seite ist projet, falls Sie es wünschen Sie hatte es aber nicht. HTML Tidy
Hope Dies könnte helfen.
Wie tylerl oben erklärt folgende Einstellungen vor:
:filetype indent on
:set filetype=html
:set smartindent
Jedoch!
Beachten Sie, dass in vim 7.4 die HTML-Tags html
, head
, body
und einige andere sind nicht eingerückt standardmäßig. Dies macht Sinn, da fast alle Inhalte in einer HTML-Datei unter diesen Tags fallen. Wenn Sie wirklich wollen, können Sie diese Tags bekommen wie so eingerückt werden:
:let g:html_indent_inctags = "html,body,head,tbody"
Das ist meine Lösung, die gut für das Öffnen „hässlich“ HTML in einer schön Abstand Art und Weise funktioniert:
vim fileIn.html -c "set sw=2 | %s/>/>\r/ | execute 'normal gg=G' | set nohlsearch | g/^\\s*\$/d"
Der sw
Befehl ist, weil mein Standard-4 ist, die für HTML zu hoch ist.
Der nächste Teil fügt eine neue Zeile (Vim denkt, es ist ein Wagenrücklauf, seufz) nach jedem Element (>
)
Dann re-indent die gesamte Datei mit =
Dann hebt sie >
(da ich in meinem vimrc set hlsearch
)
Dann entfernen Sie alle leeren / Leerzeichen-only Linien (siehe hier für weitere, auch diese Doppel entkommen, weil es in der Schale)
ist Sie können sogar | wq! fileOut.html
am Ende hinzufügen, wenn Sie überhaupt Vim nicht eingeben möchten, sondern einfach die Datei aufzuräumen.
Ich benutze dieses Skript: https://github.com/maksimr/vim-jsbeautify
In dem obigen Link, den Sie alle Informationen haben:
- Installieren
- Konfigurieren (Kopie aus dem ersten Beispiel)
- Ausführen
:call HtmlBeautify()
Ist die Arbeit schön!
Haben Sie versucht, den HTML-Einzug Skript auf der Vim Seite?
Hier ist eine schwergewichtige Lösung, die Sie einrücken wird, sowie alle die HTML ziemlich Drucken Sie müssen nicht kümmern, während Sie gerade bearbeiten.
Zuerst laden Tidy . Stellen Sie sicher, dass Sie die binäre zu Ihrem Pfad hinzufügen, so dass Sie es von jedem Ort nennen.
Als Nächstes erstellen Sie eine Konfigurationsdatei zur Beschreibung Ihrer bevorzugten HTML-Geschmack. Die Dokumentation ist nicht gut für Ordentlich, aber hier ist ein Überblick und eine Liste von alle Optionen . Hier ist meine Config-Datei:
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
Speichern Sie diese als tidyrc_html.txt
in Ihrem ftplugin
Ordner (unter vimfiles).
Eine weitere Datei: Fügen Sie die folgende Zeile (oder erstellen) html.vim
, auch in ftplugin
:
map <leader>tidy :%! tidy -config ~/vimfiles/ftplugin/tidyrc_html.txt <CR>
Um es zu verwenden, nur eine HTML-Datei öffnen, und geben Sie /tidy
. (Das /
ist der <leader>
Schlüssel.)
Dort gehen Sie! Nicht eine schnelle Lösung, mit irgendwelchen Mitteln, aber jetzt bist du ein bisschen besser ausgestattet für die Bearbeitung dieser riesigen, verkorksten HTML-Dateien.
Sie können integrieren sowohl ordentlich und html-verschönern automatisch durch die Installation von Plugin vim -autoformat . Danach können Sie ausführen je nachdem, welcher Formatierer mit einem einzigen Tastendruck installiert ist.
habe ich versucht, die üblichen „gg = G“ Befehl, das ist, was ich verwenden, um die Vertiefung von Code-Dateien zu beheben. Doch es schien nicht richtig auf HTML-Dateien zu arbeiten. Es ist einfach entfernt alle Formatierungen.
Wenn Vims Autoformat / indent gg=G
scheint „gebrochen“ zu sein (wie jede Zeile Einrücken links), höchstwahrscheinlich der Einzug Plugin ist nicht aktiviert / geladen. Es sollte wirklich eine Fehlermeldung geben, anstatt nur schlecht Einrücken tun, sonst Mitglieder halten nur das Autoformat / Einrücken Funktion ist schrecklich, wenn es eigentlich ziemlich gut ist.
Um zu überprüfen, ob der Einzug Plugin aktiviert ist / geladen, laufen :scriptnames
. Sehen Sie, wenn .../indent/html.vim
in der Liste ist. Wenn nicht, dann bedeutet, dass das Plugin nicht geladen ist. In diesem Fall fügen Sie diese Zeile ~/.vimrc
:
filetype plugin indent on
Nun, wenn Sie die Datei öffnen und ausführen :scriptnames
, sollten Sie .../indent/html.vim
sehen. Dann läuft gg=G
, die jetzt das richtige Autoformat / indent tun sollten. (Obwohl es nicht Zeilenumbrüche hinzufügen, so dass, wenn alle HTML-Code auf einer einzigen Zeile ist, wird es nicht eingerückt).
. Hinweis: wenn Sie :filetype plugin indent on
auf der Vim Befehlszeile statt ~/.vimrc
ausgeführt werden, müssen Sie erneut öffnen Sie die Datei :e
Auch Sie brauchen sich nicht um autoindent
und smartindent
Einstellungen zu kümmern, sie für diese nicht relevant sind.