Es ist schon eine Weile her, dass ich HTML-ähnlichen Code einbauen musste Vim
, aber kürzlich bin ich wieder darauf gestoßen. Angenommen, ich schreibe einige einfache HTML
:
<html><head><title>This is a title</title></head></html>
Wie schreibe ich diese abschließenden Tags für Titel, Kopf und HTML schnell auf? Ich habe das Gefühl, dass mir hier ein wirklich einfacher Weg fehlt, bei dem ich sie nicht alle einzeln aufschreiben muss.
Natürlich kann ich CtrlPdie einzelnen Tag-Namen automatisch vervollständigen, aber was mich auf meiner Laptop-Tastatur bringt, ist, die Klammern und den Schrägstrich richtig zu machen.
html
xml
vim
autocomplete
wds
quelle
quelle
Ctrl-_
, aber das macht kleine Schrift meines Terminals.Ich finde die Verwendung des xmledit- Plugins ziemlich nützlich. Es werden zwei Funktionen hinzugefügt:
<p>
), wird das Tag erweitert, sobald Sie das Schließen>
eingeben,<p></p>
und der Cursor befindet sich im Einfügemodus innerhalb des Tags.Wenn Sie dann sofort eine andere eingeben
>
( z. B. eingeben<p>>
), wird diese erweitert<p>
</p>
und platziert den Cursor innerhalb des Tags, der einmal eingerückt ist, im Einfügemodus.
Das XML- Vim-Plugin fügt diesen Funktionen Code-Faltung und verschachtelte Tag-Anpassung hinzu.
Natürlich müssen Sie sich keine Gedanken über das Schließen von Tags machen, wenn Sie Ihren HTML-Inhalt in Markdown schreiben und
%!
Ihren Vim-Puffer durch den Markdown-Prozessor Ihrer Wahl filtern :)quelle
git clone https://github.com/sukima/xmledit.git ~/.vim/bundle/xmledit
. Dies funktioniert jedoch nur beim Bearbeiten von XML-Dateien. Wenn die Datei ext .html oder .htm ist, funktioniert sie nicht.Ich mag minimale Dinge,
quelle
imap <silent> <C-c> </<C-X><C-O><C-X>
<Esc>F<i
am Ende hinzugefügt , damit der Cursor wieder in das Tag eingefügt wird .,/
Ich finde es bequemer, vim dazu zu bringen, sowohl das öffnende als auch das schließende Tag für mich zu schreiben, anstatt nur das schließende. Sie können das exzellente Ragtag-Plugin von Tim Pope verwenden. Die Verwendung sieht folgendermaßen aus (lassen Sie die Cursorposition | markieren), die Sie eingeben:
Drücken Sie CTRL+x SPACE
und du bekommst
Sie können auch CTRL+ x ENTERanstelle von CTRL+ verwenden x SPACE, und Sie erhalten
Ragtag kann mehr als nur das (z. B. <% = Zeug um dieses%> oder DOCTYPE einfügen). Sie möchten wahrscheinlich andere Plugins des Autors von ragtag ausprobieren , insbesondere Surround .
quelle
ragtag
: vim.org/scripts/script.php?script_id=1896Wenn Sie etwas Aufwändiges tun, ist Sparkup sehr gut.
Ein Beispiel von ihrer Website:
ul > li.item-$*3
erweitert sich zu:mit einem
<C-e>
.Um das in der Frage gegebene Beispiel zu tun,
ergibt
quelle
Es gibt auch ein Zencoding-Vim-Plugin: https://github.com/mattn/zencoding-vim
Tutorial: https://github.com/mattn/zencoding-vim/blob/master/TUTORIAL
Update: Dies heißt jetzt Emmet : http://emmet.io/
Ein Auszug aus dem Tutorial:
quelle
Kartierung
Ich möchte, dass meine Block-Tags (im Gegensatz zu Inline-Tags) sofort und mit einer möglichst einfachen Verknüpfung geschlossen werden (ich möchte Sondertasten wie CTRLmöglich vermeiden , obwohl ich sie
closetag.vim
zum Schließen meiner Inline-Tags verwende.) Ich verwende diese gerne Verknüpfung beim Starten von Tag-Blöcken (danke an @kimilhee; dies ist ein Start seiner Antwort):Beispielnutzung
Art-
Ergebnis-
wo
|
zeigt die Cursorposition an.Erläuterung
inoremap
bedeutet , das Mapping im Einfügemodus zu erstellen><Tab>
bedeutet eine schließende spitze Klammer und ein Tabulatorzeichen; das ist, was abgestimmt ist><Esc>
bedeutet, das erste Tag zu beenden und aus dem Einfügen in den normalen Modus zu entkommenF<
bedeutet , die letzte Öffnungswinkelhalterung zu findenl
bedeutet , den Cursor nach rechts zu bewegen (Kopierwinkel nicht kopieren)yt>
bedeutet, von der Cursorposition nach oben bis vor der nächsten schließenden Klammer zu ziehen (dh den Inhalt der Tags kopieren)o</
bedeutet , dass Sie im Einfügemodus eine neue Zeile beginnen und eine Öffnungswinkelklammer und einen Schrägstrich hinzufügen<C-r>"
bedeutet Einfügen im Einfügemodus aus dem Standardregister ("
)><Esc>
bedeutet, das schließende Tag zu schließen und den Einfügemodus zu verlassenO<Space>
bedeutet , eine neue Zeile im Einfügemodus über dem Cursor zu beginnen und ein Leerzeichen einzufügenquelle
l
"rechts" und nicht "links" bedeutet, haha ... was für ein lustiger Fehler. Was denkst du über meinen Beitrag? Mir ist aufgefallen, dass du nicht positiv gestimmt hast.au filetype html inoremap <buffer> ...
inoremap ><Tab> ><Esc>F<lyt>o</<C-r>"><Esc>kJxi
Ich entferne0<Space>
und fügte hinzukJxi
. Gehen Sie 1 Schritt nach oben, verketten Sie zwei Zeilen, entfernen Sie ein Zeichen und wechseln Sie in den Einfügemodus.Auschecken
vim-closetag
Es ist ein wirklich einfaches Skript (auch als
vundle
Plugin verfügbar ), das (X) HTML-Tags für Sie schließt. Von es istREADME
:Hinweis:
|
ist hier der Cursorquelle
allml (jetzt Ragtag) und Omni-Completion (<CX> <CO>) funktionieren in einer Datei wie .py oder .java nicht.
Wenn Sie das Tag in diesen Dateien automatisch schließen möchten, können Sie es wie folgt zuordnen.
(^ R ist Contrl + R: Sie können wie folgt Control + v und dann Control + r eingeben)
(| ist Cursorposition) jetzt, wenn Sie eingeben ..
<p> abcde |
und tippe ^ j
dann schließt es das Tag so ..
<p> abcde </ p> |
quelle
Hier ist eine weitere einfache Lösung, die auf leicht zu findendem Web-Schreiben basiert:
Automatisches Schließen eines HTML-Tags
:iabbrev </ </<C-X><C-O>
Abschluss einschalten
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
quelle
Aufbauend auf der hervorragenden Antwort von @KeithPinson (leider noch nicht genügend Reputationspunkte, um Ihre Antwort zu kommentieren) verhindert diese Alternative, dass die automatische Vervollständigung zusätzliche Elemente kopiert, die sich möglicherweise im HTML-Tag befinden (z. B. Klassen, IDs usw.). .) sollte aber nicht in das schließende Tag kopiert werden.
UPDATE Ich habe meine Antwort aktualisiert, um mit
filename.html.erb
Dateien zu arbeiten .Ich habe festgestellt, dass meine ursprüngliche Antwort in Dateien, die häufig in Rails-Ansichten verwendet werden, nicht funktioniert hat,
some_file.html.erb
z<p>Year: <%= @year %><p>
. B. wenn ich eingebettetes Ruby verwendet habe (z . B. ). Der folgende Code wird mit arbeiten.html.erb
Dateien.Beispielnutzung
Art:
Ergebnis:
wo
|
zeigt die Cursorposition anUnd als Beispiel für das Hinzufügen des schließenden Tags inline anstelle des Blockstils:
Beispielnutzung
Art:
Ergebnis:
wo
|
zeigt die Cursorposition anEs ist wahr, dass beide der obigen Beispiele darauf beruhen
>[Tab]
, ein schließendes Tag zu signalisieren (was bedeutet, dass Sie entweder den Inline- oder den Blockstil wählen müssten ). Persönlich verwende ich den Blockstil mit>[Tab]
und den Inline-Stil mit>>
.quelle