Der Vim- %
Operator springt zu übereinstimmenden Klammern, Kommentarenden und einigen anderen Dingen. Es stimmt jedoch nicht mit XML-Tags überein (oder nach meinem besten Wissen mit einem anderen Tag).
Was ist der beste Weg, um mit Vim zum passenden XML-Tag zu springen?
Hinweis: Ich möchte wirklich einen Abschnitt in einer XML-Datei duplizieren, ohne manuell nach dem passenden Tag zu suchen.
Antworten:
Es gibt ein vim-Plugin namens matchit.vim. Sie finden es hier: http://www.vim.org/scripts/script.php?script_id=39 . Es wurde so ziemlich genau zu dem Zweck erstellt, den Sie beschreiben.
Installieren Sie das, platzieren Sie den Cursor auf dem Hauptteil des Tags (nicht auf dem <>, sonst stimmt er mit diesen überein) und drücken Sie%, um zum anderen Tag zu springen. Auf der Seite des Skripts erfahren Sie, was sonst noch dazu passt.
quelle
runtime macros/matchit.vim
sollte es aktivieren und erlauben%
, XML-Tags abzugleichen.packadd! matchit
zu.vimrc
, um es zu aktivieren. Lesen Sie mehr:help matchit
Sie können dies ohne zusätzliche Plugins tun:
Eine weitere nützliche Operation ist: vit- wählt den Inhalt des Tags (inner) aus.
Update (dank @elrado) Beispiel: Mit dieser Optionvito können Sie den inneren Inhalt des Tags auswählen und den Cursor am Anfang des ausgewählten Textes positionieren.
Referenz: /superuser/182355/how-can-i-select-an-html-tags-content-in-vim
Vim-Referenz (danke an @Geek für den Hinweis):
Du wirst kriegen:
quelle
cit
ändert die i nterior des Tags - nur den Inhalt.cat
ändern ein ll des Tags - die Inhalte und eine lso den Tag selbst, sowohl das Öffnen und Schließen.Das OP erklärte, dass er wirklich einen Abschnitt von XML kopieren wollte, ohne das passende Tag finden zu müssen. Dies ist im normalen Modus mit
yat<motion>p
einfach möglich. Dabei wird der Text in die entsprechenden Tags gezogen und eingefügt.yit<motion>p
ist fast das gleiche, enthält jedoch nicht die äußeren Tags.Das 'y' in der Zeichenfolge ist natürlich der Normalmodus-Befehl "yank". (
:help y
)a
oderi
kann zur Objektauswahl nach einem Operator verwendet werden , wie beispielsweisey
oder in einer visuellen Auswahl. Das Symbol nacha
oderi
gibt an, was ausgewählt werden soll. Der hier verwendete Objekttypt
gibt ein SGML-Tag an. (:help object-select
).Natürlich
<motion>
bedeutet nur, sich mit den Mitteln Ihrer Wahl irgendwohin zu bewegen undp
den gezogenen Text an dieser Stelle abzulegen.quelle
i
steht für "innen" (oder "inner").a
steht für "a"?a
steht für "alle".a
steht für herum . Es macht für mich mehr Sinn.Nur mein Trick, "yank", "object-select" (Tag-Auswahl) und "zum letzten zerrten Text springen" zu verwenden.
vor dem Schließen des Tags nach rechts springen
und
nach dem Öffnen des Tags nach rechts springen
Hinweis: Dadurch wird der Inhalt des Standardregisters geändert
quelle