Cela fait un moment que je n'ai pas eu à faire de code de type HTML Vim
, mais récemment, je suis tombé dessus à nouveau. Dites que j'écris quelques simples HTML
:
<html><head><title>This is a title</title></head></html>
Comment écrire rapidement ces balises de fermeture pour le titre, l'en-tête et le HTML? J'ai l'impression de manquer ici un moyen très simple qui ne m'implique pas de les écrire tous un par un.
Bien sûr, je peux utiliser CtrlPpour compléter automatiquement les noms de balises individuelles, mais ce qui me permet d'utiliser le clavier de mon ordinateur portable est en fait d'obtenir les crochets et les barres obliques correctes.
html
xml
vim
autocomplete
wds
la source
la source
Ctrl-_
, mais cela fait une petite police de mon terminal.Je trouve l'utilisation du plugin xmledit assez utile. il ajoute deux fonctionnalités:
<p>
), il élargit l'étiquette dès que vous tapez la fermeture>
dans<p></p>
et place le curseur dans la balise en mode d'insertion.Si vous en tapez immédiatement un autre
>
( par exemple, vous tapez<p>>
), cela étend cela en<p>
</p>
et place le curseur à l'intérieur de la balise, indenté une fois, en mode insertion.
Le plugin xml vim ajoute un pliage de code et une balise imbriquée correspondant à ces fonctionnalités.
Bien sûr, vous n'avez pas du tout à vous soucier de la fermeture des balises si vous écrivez votre contenu HTML dans Markdown et utilisez
%!
pour filtrer votre tampon Vim via le processeur Markdown de votre choix :)la source
git clone https://github.com/sukima/xmledit.git ~/.vim/bundle/xmledit
. Mais cela ne fonctionne que lors de l'édition de fichiers .xml. Lorsque le fichier ext est .html ou .htm, cela ne fonctionne pas.J'aime les choses minimales,
la source
imap <silent> <C-c> </<C-X><C-O><C-X>
<Esc>F<i
à la fin de celui-ci afin de remettre le curseur à l'intérieur de la balise.,/
pour fermer la baliseJe trouve plus pratique de faire en sorte que vim écrive à la fois la balise d'ouverture et de fermeture à ma place, plutôt que la balise de fermeture. Vous pouvez utiliser l'excellent plugin ragtag de Tim Pope. L'utilisation ressemble à ceci (laissez | marquer la position du curseur) que vous tapez:
appuyez sur CTRL+x SPACE
et vous obtenez
Vous pouvez également utiliser CTRL+ x ENTERau lieu de CTRL+ x SPACE, et vous obtenez
Ragtag peut faire plus que cela (par exemple, insérer <% = trucs autour de ce%> ou DOCTYPE). Vous voudrez probablement vérifier d'autres plugins par l' auteur de ragtag , en particulier surround .
la source
ragtag
: vim.org/scripts/script.php?script_id=1896Si vous faites quelque chose de élaboré, Sparkup est très bon.
Un exemple de leur site:
ul > li.item-$*3
s'étend à:avec un
<C-e>
.Pour faire l'exemple donné dans la question,
rendements
la source
Il existe également un plugin zencoding vim: https://github.com/mattn/zencoding-vim
tutoriel: https://github.com/mattn/zencoding-vim/blob/master/TUTORIAL
Mise à jour: cela s'appelle désormais Emmet : http://emmet.io/
Un extrait du tutoriel:
la source
Cartographie
J'aime que mes balises de bloc (par opposition aux balises en ligne) soient fermées immédiatement et avec un raccourci aussi simple que possible (j'aime éviter les touches spéciales comme CTRLlorsque c'est possible, même si j'utilise
closetag.vim
pour fermer mes balises en ligne.) J'aime utiliser ceci raccourci lors du démarrage de blocs de balises (grâce à @kimilhee; c'est un décollage de sa réponse):Exemple d'utilisation
Type-
Résultat-
où
|
indique la position du curseur.Explication
inoremap
signifie créer le mappage en mode insertion><Tab>
signifie des crochets de fermeture et un caractère de tabulation; c'est ce qui correspond><Esc>
signifie terminer la première étiquette et sortir de l'insertion en mode normalF<
signifie trouver le dernier support d'angle d'ouverturel
signifie déplacer le curseur vers la droite (ne pas copier le crochet d'ouverture)yt>
signifie tirer de la position du curseur vers le haut jusqu'à la prochaine parenthèse angulaire de fermeture (c'est-à-dire copier le contenu des balises)o</
signifie commencer une nouvelle ligne en mode insertion et ajouter un crochet d'angle d'ouverture et une barre oblique<C-r>"
signifie coller en mode insertion à partir du registre par défaut ("
)><Esc>
signifie fermer l'étiquette de fermeture et sortir du mode insertionO<Space>
signifie commencer une nouvelle ligne en mode insertion au-dessus du curseur et insérer un espacela source
l
signifiait «droite» et non «gauche», haha ... quelle drôle d'erreur. Qu'avez-vous pensé de mon message? J'ai remarqué que vous n'avez pas voté pour.au filetype html inoremap <buffer> ...
inoremap ><Tab> ><Esc>F<lyt>o</<C-r>"><Esc>kJxi
Je supprime0<Space>
et ajoutekJxi
. Montez d'un cran, concaténez deux lignes, supprimez un caractère puis passez en mode insertion.Check-out
vim-closetag
C'est un script très simple (également disponible sous forme de
vundle
plugin) qui ferme les balises HTML (X) pour vous. De c'estREADME
:Remarque:
|
le curseur est-il icila source
allml (maintenant Ragtag) et Omni-completion (<CX> <CO>) ne fonctionnent pas dans un fichier comme .py ou .java.
si vous souhaitez fermer automatiquement la balise dans ces fichiers, vous pouvez mapper comme ceci.
(^ R est Contrl + R: vous pouvez taper comme ceci Control + v puis Control + r)
(| est la position du curseur) maintenant si vous tapez ..
<p> abcde |
et tapez ^ j
puis fermez la balise comme ceci.
<p> abcde </p> |
la source
Voici encore une autre solution simple basée sur une écriture Web facilement trouvable:
Fermeture automatique d'une balise HTML
:iabbrev </ </<C-X><C-O>
Activer l'achèvement
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
la source
S'appuyant sur l'excellente réponse de @KeithPinson (désolé, pas encore assez de points de réputation pour commenter votre réponse), cette alternative empêchera la saisie semi-automatique de copier tout ce qui pourrait se trouver à l'intérieur de la balise html (par exemple, classes, identifiants, etc.) .) mais ne doit pas être copié dans la balise de fermeture.
MISE À JOUR J'ai mis à jour ma réponse pour travailler avec des
filename.html.erb
fichiers.J'ai remarqué que ma réponse d'origine ne fonctionnait pas dans les fichiers couramment utilisés dans les vues Rails, comme
some_file.html.erb
lorsque j'utilisais ruby intégré (par exemple<p>Year: <%= @year %><p>
). Le code ci - dessous fonctionnera avec les.html.erb
fichiers.Exemple d'utilisation
Type:
Résultat:
où
|
indique la position du curseurEt comme exemple d'ajout de la balise de fermeture en ligne au lieu du style de bloc:
Exemple d'utilisation
Type:
Résultat:
où
|
indique la position du curseurIl est vrai que les deux exemples ci - dessus se fondent sur
>[Tab]
pour signaler une balise de fermeture ( ce qui signifie que vous devez choisir soit en ligne ou sous forme de bloc). Personnellement, j'utilise le style bloc avec>[Tab]
et le style en ligne avec>>
.la source