L' %
opérateur Vim passe aux parenthèses correspondantes, à la fin du commentaire et à quelques autres choses. Cependant, il ne correspond pas aux balises XML (ou à toute autre balise, à ma connaissance).
Quelle est la meilleure façon de passer à la balise XML correspondante à l'aide de Vim?
Remarque: Ce que je veux vraiment faire, c'est dupliquer une section dans un fichier XML sans chercher manuellement la balise correspondante.
Réponses:
Il existe un plugin vim appelé matchit.vim. Vous pouvez le trouver ici: http://www.vim.org/scripts/script.php?script_id=39 . Il a été créé à peu près exactement dans le but que vous décrivez.
Installez-le, placez votre curseur sur le corps de la balise (pas le <>, sinon il correspondra à ceux-ci) et appuyez sur% pour passer à l'autre balise. Consultez la page du script pour savoir à quoi il correspond.
la source
runtime macros/matchit.vim
devrait l'activer et permettre de%
faire correspondre les balises XML.packadd! matchit
à.vimrc
pour l'activer. Lire la suite:help matchit
Vous pouvez le faire sans plugins supplémentaires:
Une autre opération utile est: vit- sélectionnera le contenu de la balise (interne).
Mise à jour (grâce à @elrado) Exemple: vitovous permettra de sélectionner le contenu interne de la balise et de positionner le curseur au début du texte sélectionné.
Référence: /superuser/182355/how-can-i-select-an-html-tags-content-in-vim
Référence Vim (merci à @Geek pour l'avoir noté):
tu auras:
la source
cit
change la i nterior de l'étiquette - tout le contenu.cat
changer un ll de l'étiquette - le contenu et un LSO l'étiquette elle - même, à la fois d' ouverture et de fermeture.Le PO a déclaré que ce qu'il voulait vraiment faire était de copier une section de XML sans avoir à trouver la balise correspondante. Cela se fait facilement en mode normal avec
yat<motion>p
, qui extrait le texte à l'intérieur et y compris les balises correspondantes, puis le colle.yit<motion>p
est presque le même, mais il n'inclut pas les balises externes.Le "y" dans la chaîne est bien sûr la commande "yank" en mode normal. (
:help y
)a
oui
peut être utilisé pour la sélection d'objets après un opérateur tel quey
ou à l'intérieur d'une sélection visuelle. Le symbole aprèsa
oui
spécifie ce qui doit être sélectionné. Le type d'objett
utilisé ici indique une balise SGML. (:help object-select
).Bien sûr, cela
<motion>
signifie simplement se déplacer quelque part par le biais de votre choix etp
met le texte retiré à cet endroit.la source
i
signifie «intérieur» (ou «intérieur»).a
signifie "a"?a
signifie "tout".a
signifie autour . Cela a plus de sens pour moi.Juste mon truc d'utiliser "yank", "object-select" (tag select) et "jump to last yanked text".
pour sauter à droite avant de fermer la balise
et
pour sauter à droite après avoir ouvert la balise
Remarque: cela changera le contenu du registre par défaut
la source