HTML avec Vim : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
m
 
Ligne 1 : Ligne 1 :
= Introduction =
+
== Introduction ==
 
[[Image:VIMHTML.PNG]]
 
[[Image:VIMHTML.PNG]]
  
 
Vim est de base très performant en HTML : il fait de l'intellisense et indente super bien. Il ne lui manque qu'une seule fonction utile : la fermeture automatique des tags lorsque l'on appuie sur "</". Vous trouverez sur Internet une fonction permettant de compléter les tags en appuyant sur \hc, mais devoir appuyer sur cette longue série de touche me semble un peu pénible. La fonction est également légèrement buggée. Voici une version tweekée et corrigée fermant automatiquement les tags lors de l'appui successif de < et /.
 
Vim est de base très performant en HTML : il fait de l'intellisense et indente super bien. Il ne lui manque qu'une seule fonction utile : la fermeture automatique des tags lorsque l'on appuie sur "</". Vous trouverez sur Internet une fonction permettant de compléter les tags en appuyant sur \hc, mais devoir appuyer sur cette longue série de touche me semble un peu pénible. La fonction est également légèrement buggée. Voici une version tweekée et corrigée fermant automatiquement les tags lors de l'appui successif de < et /.
  
= Code : fermeture automatique des tags =
+
== Code : fermeture automatique des tags ==
 
Ajoutez ces lignes à votre .vimrc :
 
Ajoutez ces lignes à votre .vimrc :
 
<pre><nowiki>
 
<pre><nowiki>
Ligne 91 : Ligne 91 :
 
</nowiki></pre>
 
</nowiki></pre>
  
= Fichiers de template =
+
== Fichiers de template ==
 
Si vous êtes amené à éditer des fichiers .tpl, qui sont en réalité de l'HTML, voici comment dire à Vim de considérer automatiquement ces types de fichier comme de l'HTML : ajoutez cette ligne à votre .vimrc :
 
Si vous êtes amené à éditer des fichiers .tpl, qui sont en réalité de l'HTML, voici comment dire à Vim de considérer automatiquement ces types de fichier comme de l'HTML : ajoutez cette ligne à votre .vimrc :
 
<pre><nowiki>
 
<pre><nowiki>
Ligne 103 : Ligne 103 :
 
[[Catégorie:Linux]]
 
[[Catégorie:Linux]]
 
[[Catégorie:MacOSX]]
 
[[Catégorie:MacOSX]]
 +
 +
== ==

Version actuelle en date du 23 mars 2013 à 12:58

Introduction

VIMHTML.PNG

Vim est de base très performant en HTML : il fait de l'intellisense et indente super bien. Il ne lui manque qu'une seule fonction utile : la fermeture automatique des tags lorsque l'on appuie sur "</". Vous trouverez sur Internet une fonction permettant de compléter les tags en appuyant sur \hc, mais devoir appuyer sur cette longue série de touche me semble un peu pénible. La fonction est également légèrement buggée. Voici une version tweekée et corrigée fermant automatiquement les tags lors de l'appui successif de < et /.

Code : fermeture automatique des tags

Ajoutez ces lignes à votre .vimrc :

function! InsertCloseTag()
  " inserts the appropriate closing HTML tag
  " may require ignorecase to be set, or to type HTML tags in exactly the same case
  if &filetype == 'html' || &filetype=='php' || &filetype=='xml'
  
    " list of tags which shouldn't be closed:
    let UnaryTags = ' Area Base Br br BR DD dd Dd DT dt Dt HR hr Hr Img img IMG input INPUT Input li Li LI link LINK Link meta Meta p P Param param PARAM '

    " remember current position:
    normal mz
    normal mw

    " loop backwards looking for tags:
    let Found = 0
	let NBL = 0
    while Found == 0
		 let NBL = NBL+1
		 if NBL == 50
			 break
		endif

      " find the previous <, then go forwards one character and grab the first
      " character plus the entire word:
      execute "normal ?\<LT>\<CR>l"
      normal "zyl
      let Tag = expand('<cword>')

      " if this is a closing tag, skip back to its matching opening tag:
      if @z == '/'
        execute "normal ?\<LT>" . Tag . "\<CR>"

      " if this is a unary tag, then position the cursor for the next
      " iteration:
      elseif match(UnaryTags, ' ' . Tag . ' ') > 0
        normal h

      " otherwise this is the tag that needs closing:
      else
        let Found = 1

      endif
    endwhile " not yet found match

    " create the closing tag and insert it:
    let @z = '</' . Tag . '>'
    normal `z"zp
	normal `w
	execute "normal />\<cr>"
  else " filetype is not HTML
	normal mw
    let @z = '</'
    normal "zp`wll
  endif " check on filetype
endfunction " InsertCloseTag()
imap <lt>/ <Esc>:call InsertCloseTag()<CR>a


Codes HTML automatiques

Pour remplacer les é par des &eacute; automatiquement, recopiez ces lignes dans un fichier HTML.vim placé dans $HOME/.vim/ftplugin/html/ :

imap á &aacute;
imap é &eacute;
imap í &iacute;
imap ó &oacute;
imap ú &uacute;
imap ü &uuml;
imap ñ &ntilde;
imap Á &Aacute;
imap É &Eacute;
imap Í &Iacute;
imap Ó &Oacute;
imap Ú &Uacute;
imap Ü &Uuml;
imap Ñ &Ntilde;
imap ¡ &iexcl;
imap ¿ &iquest;
imap << &laquo;
imap >> &raquo;
imap è &egrave;
imap à &agrave;

Fichiers de template

Si vous êtes amené à éditer des fichiers .tpl, qui sont en réalité de l'HTML, voici comment dire à Vim de considérer automatiquement ces types de fichier comme de l'HTML : ajoutez cette ligne à votre .vimrc :

au BufNewFile,BufRead *.tpl :set ft=html " all my .tpl files ARE html