Supprimer le texte entre les balises HTML dans vim?

164

je connais

di<

supprimera dans une balise HTML elle-même.

Existe-t-il un moyen simple de supprimer du texte entre deux balises?

<span>How can I delete this text?</span>

Merci!

CMB
la source

Réponses:

321

ditsupprimera le texte entre les balises XML correspondantes. ( itest pour "bloc de balises internes".)

Voir :h itet :h tag-blocks.

Brian Carper
la source
30
Et, bien sûr, citlorsque vous souhaitez écrire immédiatement après.
Debilski
6
Et le plugin Surround ( vim.org/scripts/script.php?script_id=1697 ) est génial lorsque vous voulez faire des choses comme changer la balise environnante (cst) d'un <p> à un <div>, par exemple.
Kris Jenkins
4
Il existe également dat (bloc Delete A Tag) qui inclut les balises réelles. cit qui est comme dit mais entre en mode insertion après. cat qui est comme dat mais entre en mode insertion après. Aussi di "et di (pour supprimer les guillemets doubles intérieurs et supprimer les parenthèses intérieures respectivement.
aiham
@KrisJenkins pouvez-vous montrer un exemple complet comment y parvenir? Je ne peux le faire qu'avec des guillemets / crochets.
FelikZ
1
Aussi vat(ou vit), suivi de répétées at(ou it) pour sélectionner progressivement les balises environnantes. (Ou v2at, etc.). Puis dsupprimer (etc.).
Joe Freeman
27
cit
ci"

Deux des meilleures commandes d'activation de productivité de vim.

J'économise beaucoup de temps et d'efforts avec ces deux-là.

chipairon
la source
3
citest couvert dans ce fil, mais pour la postérité, ci"supprimera jusqu'à la prochaine "découverte. idéal pour changer les noms de classe dans les balises html, comme <span id="really long annoying-id">- avec le curseur au début ", appuyez sur ci"et laissez tomber en insérant de nouveaux caractères entre les guillemets.
Alex Moore-Niemi
ciwest également utile car il supprime le mot courant; Je l'utilise plus que citet en ci"fait.
John Sparwasser
2
@ AlexMoore-Niemi: ci"supprimera en fait le texte à gauche jusqu'au prochain devis et à droite jusqu'au prochain devis puis entrera en mode insertion. ct"est en fait la commande pour "supprimer jusqu'au prochain" trouvé ". Mais oui, il se comporte de la même manière si le curseur est sous le guillemet gauche.
schlimmchen
9

essayez dt < pendant que le curseur est sur le premier caractère à supprimer. Dans votre exemple, le «H».

JD Frias
la source
Aussi très utile pour d'autres situations, merci! (Je pense que ça devrait être "dt <")
CMB
1
Bien que cela soit techniquement vrai, cela nécessite de naviguer vers le premier caractère que vous souhaitez supprimer au lieu de simplement sauter n'importe où dans la ligne. Mais vrai est vrai. :-)
lyonsinbeta
4

( curseur sur le premier caractère à supprimer ) v / <[enter] d

Cette solution commence sur le premier caractère, puis entre en mode visuel ("v"). Il recherche ensuite le crochet de début suivant ("/ <"), puis appuyez sur Entrée pour quitter la recherche.

À ce stade, votre sélection visuelle couvrira le texte à supprimer. appuyez sur d («d») pour le supprimer.

Si je devais faire cela pour un tas de balises, j'enregistrerais la commande et la combinerais avec d'autres recherches pour la rendre répétable. La séquence de touches pourrait ressembler à ceci:

[ curseur au début du fichier ] qa /> [enter] lv / <[enter] dnq

puis appuyez:

20 @ a

faire cela pour 20 balises

Brad
la source
J'utilisais souvent la commande c/<[enter]dans ma "vie Vim", mais maintenant je regrette un peu ça. Vous voyez, la plupart des plugins "Vi-mode" pour d'autres éditeurs / IDE populaires ne prennent pas en charge ce type de commande spécifique. Ils soutiennent cit, ci", ct<et cependant. Alors, je réenseigne à nouveau.
pilat
-1

Si vous souhaitez faire l'inverse de la suppression de texte entre les indicateurs, je suggère d'installer Vim-Surround et d'exécuter dstce qui supprime la balise surround

Nick Sarafa
la source