126 votes

Comment fermer rapidement les balises HTML dans Vim ?

Cela fait un moment que je n'ai pas eu à faire du code HTML en Vim mais récemment, je suis retombé sur ce sujet. Disons que j'écris une simple HTML :

<html><head><title>This is a title</title></head></html>

Comment écrire rapidement ces balises de fermeture pour title, head et html ? J'ai l'impression qu'il me manque une méthode très simple qui ne nécessite pas que je les écrive toutes une par une.

Bien sûr, je peux utiliser CtrlP pour compléter automatiquement les noms des balises individuelles, mais ce qui m'énerve sur mon clavier d'ordinateur portable, c'est d'arriver à saisir correctement les parenthèses et les barres obliques.

78voto

hakamadare Points 1266

Je trouve que l'utilisation du xmledit plugin assez utile. il ajoute deux éléments de fonctionnalité :

  1. Lorsque vous ouvrez une balise ( par exemple type <p> ), il développe la balise dès que vous tapez la balise de fermeture > en <p></p> et place le curseur à l'intérieur de la balise en mode insertion.
  2. Si vous tapez ensuite immédiatement un autre > ( par exemple vous tapez <p>> ), il l'étend en

    <p>

    </p>

et place le curseur à l'intérieur de la balise, indentée une fois, en mode insertion.

Le site xml Le plugin vim ajoute à ces fonctionnalités le pliage du code et la correspondance des balises imbriquées.

Bien sûr, vous n'avez pas à vous préoccuper de la fermeture des balises si vous écrivez votre contenu HTML dans le format Markdown et utiliser %! pour filtrer votre tampon Vim à travers le processeur Markdown de votre choix :)

2 votes

Ce plugin peut-il fermer automatiquement les balises lorsque l'on tape "</" ? Ou simplement insérer la balise de fermeture avec une touche de clavier ? Parfois, on supprime la balise de fermeture et on veut l'insérer après...

0 votes

Je l'ai désinstallé parce qu'il faisait clignoter mon gvim au démarrage.

9 votes

Je n'aime pas ce plugin parce qu'il ne fournit pas un moyen facile de faire passer votre curseur au-delà de la balise générée. For example, if you want to write "Have a <b>nice</b> day", you start off by typing "Have a <b>nice", which renders as "Have a <b>nice|</b>". Vous devez alors soit passer par la flèche droite, soit quitter le mode insertion pour continuer avec le reste de la phrase. C'est pourquoi une solution où vous appuyez sur une touche pour insérer la balise de fin est préférable.

60voto

sjh Points 1316

J'aime les choses minimales,

imap ,/ </<C-X><C-O>

4 votes

Que fait <C-X><C-O> ? Il ne fait rien pour moi.

9 votes

Il y a des cas où l'on voudrait écrire ",/", alors je préfère utiliser un autre raccourci. Un autre détail est que l'omni-complétion doit être fermée, sans attendre d'entrée supplémentaire. Donc : imap <silent> <C-c> </<C-X><C-O><C-X>

1 votes

Très cool. Ajouté également <Esc>F<i à la fin de celui-ci afin de remettre le curseur à l'intérieur de la balise.

53voto

Krzysiek Goj Points 1049

Je trouve plus pratique de faire en sorte que vim écrive les deux balises d'ouverture et de fermeture pour moi, plutôt que seulement la fermeture. Vous pouvez utiliser l'excellent plugin ragtag par Tim Pope. L'utilisation ressemble à ceci (laissez | marquer la position du curseur) vous tapez :

span|

presse CTRL + x SPACE

et vous obtenez

<span>|</span>

Vous pouvez également utiliser CTRL + x ENTER au lieu de CTRL + x SPACE et vous obtenez

<span>
|
</span>

Ragtag peut faire plus que cela (par exemple, insérer des <%= trucs autour de ce %> ou DOCTYPE). Vous voulez probablement vérifier d'autres plugins par auteur de ragtag notamment surround .

0 votes

+1 Génial ! Btw, ceci est maintenant connu comme ragtag : vim.org/scripts/script.php?script_id=1896

0 votes

Celui-ci est certainement le plus simple. Textmate était bon, mais Vim le bat avec ceci, merci Krzysiek.

38voto

Ian P Points 7930

Regarde ça

closetag.vim

Functions and mappings to close open HTML/XML tags

https://www.vim.org/scripts/script.php?script_id=13

J'utilise quelque chose de similaire.

0 votes

J'ai installé ceci. Il ne ferme pas la balise automatiquement. Quel est le raccourci ? J'essaie Ctrl-_ mais cela fait une petite police de mon terminal.

24voto

thanthese Points 181

Si vous faites quelque chose d'élaboré, étincelle est très bon.

Un exemple tiré de leur site :

ul > li.item-$*3 s'étend à :

<ul>
    <li class="item-1"></li>
    <li class="item-2"></li>
    <li class="item-3"></li>
</ul>

avec un <C-e> .

Pour faire l'exemple donné dans la question,

html > head > title{This is a title}

donne

<html>
  <head>
    <title>This is a title</title>
  </head>
</html>

0 votes

Merci beaucoup ! C'est plus cool que tout ce que j'ai vu auparavant, pas seulement Vim mais parmi tous les autres éditeurs ! Super !

0 votes

C'est un excellent plugin

0 votes

Ce plugin a évolué à partir du codage zen. Ce dernier est maintenant connu sous le nom de emmet et possède un ensemble de fonctionnalités légèrement plus important.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X