Liste de fonctions

De Vim-fr.

Version du 19 avril 2010 à 20:27 par Fero14041 (discuter | contributions)
(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)

Cette page contient un ensemble de fonctions utiles pour vim. N'hésitez pas à rajouter les vôtres.

Remarque: ces fonctions sont souvent rajoutées dans le .vimrc.

CleanText

fun CleanText()
    let curcol = col(".")
    let curline = line(".")
    exe ":retab"
$//ge"xe ":%s/
/ /ge"xe ":%s/
    exe ":%s/ \\+$//e"
    call cursor(curline, curcol)
endfun
map <F6> :call CleanText()<CR>

Cette fonction convertit tous les tabs en espaces (suivant la valeur en espaces que vous avez attribuée à vos tabs), met les fichiers aux formats mac et dos au format unix. Elle supprime également les espaces en trop en fin de lignes. La fonction est mapée sur la touche <F6> ici.

ModeChange

function ModeChange()
  if getline(1) =~ "^#!.*/bin/"
      silent !chmod u+x <afile>
  endif
endfunction
 
au BufWritePost * call ModeChange()

Rajoute automatiquement la permission "exécutable" aux fichiers dont la première ligne commence par #!<n'importe quel caractère>/bin/.

Uploader sur un ftp

let g:hftp="mon-hote.fr/www/"
let g:rep="/srv/http/monProjet/"
function! E_ftp_upload()
    exec ":cd ".g:rep
    let s:fichier=bufname("%")
    exec ":Nwrite ftp://".g:hftp.s:fichier
endfunction
map <F8> :call E_ftp_upload()<ENTER>

Cette fonction permet d'uploader le fichier courant sur un ftp, où le fichier est situé à un endroit similaire, comme dans le cas où le site web a été cloné en local.

Par exemple :

En local :

/srv/http/mon_projet/

/srv/http/mon_projet/includes/

/srv/http/mon_projet/images/

/srv/http/mon_projet/css/


en distant :

/www/

/www/includes/

/www/images/

/www/css/


Si je modifie en local le fichier includes/inc_general.php, ça le mettra automatiquement dans le dossier /www/includes/ sur le serveur distant.

Configuration :

Il y a deux variables à configurer :

  • g:hftp => le nom d'hôte ftp + le répertoire racine dans lequel vous voulez uploader vos fichiers (ex : ftpperso.free.fr/monBlog/). Attention : ne pas oublier le "/" à la fin.
  • g:rep => c'est le répertoire local sur lequel vous travaillez.

Ces deux variables sont modifiables à la volée avec les commandes suivantes :

:let g:hftp="mon-nouvel-hoteftp.com/www/"<ENTER>     (chez de nombreux hébergeurs il faut le répertoire "www")
:let g:rep="/mon/nouveau/repertoire/detravail/"<ENTER>

La fonction Nwrite (incluse par défaut dans Vim) peut utiliser le fichier .netrc si il existe dans le $HOME. Donc, pour faciliter les transferts, on peut définir une liste de serveurs ftp dans ce fichier.

Exemple de contenu de .netrc :

machine mon-super-site.fr login jojo password xfjar24
machine mon-autre-site.com login toto password fa4grgi

On peut ainsi définir une liste de sites. Dans la fonction E_ftp_upload, il suffit de remplacer mon-hote.fr par le site sur lequel on veut uploader (dans notre exemple, ça pourra être mon-super-site.fr), et la fonction Nwrite va chercher le login et le password correspondants dans le fichier .netrc.

Pour des raisons de sécurité évidentes, il faudra changer les permissions sur le fichier .netrc, pour 600, voire 400:

  • 600 : le propriétaire peut lire et écrire,
  • 400 : le propriétaire peut lire.