Dans la série de la configuration de VIM, je vais parler d’un comportement qui est souvent adopté par les gens qui s’adonne au VIM scripting , à savoir le backup des fichiers édités !
Qui ne s’est jamais vu réaliser une copie d’un document avant de l’éditer ou, au contraire, qui n’a jamais regretté d’avoir évité cette best practice d’utilisateur GNU/Linux après avoir enregistré une bêtise dans un fichier ? La méthode traditionnelle veut que l’on copie son fichier vers une sauvegarde avant de l’éditer. Le problème est qu’à terme, on se retrouve avec une ribambelle de fichiers de sauvegarde qui polluent les répertoires et qui ne sont plus utiles. De plus, on en vient fatalement à oublier et à le regretter alors que cette opération, puisque systématique, doit être automatisée !
C’est là qu’intervient la commande :set backup de VIM qui active ce comportement et qui permet à l’éditeur de créer une copie du fichier vers un fichier du même nom suffixé d’un caractère ~ dans le même répertoire. Pour les raisons évoquées plus tôt, il peut s’avérer intéressant de centraliser ces sauvegardes dans un seul répertoire qui sera spécifié par :set backupdir.
1 2 3 4 5 | if !filewritable($HOME."/.vim/backup") " Si le repertoire n'existe pas call mkdir($HOME."/.vim/backup", "p") " Creation du repertoire de sauvegarde endif set backupdir=$HOME/.vim/backup " On definit le repertoire de sauvegarde set backup " On active le comportement |
On commence par regarder si le répertoire ~/.vim/backup existe et s’il est accessible en écriture, si tel n’était pas le cas, on le crée lui et ses parents avant de le définir comme la destination des fichiers de sauvegarde.
N’oubliez pas que je suis friand de vos remarques et conseils !

Sympa, je ne connaissais pas. Personnellement je préfère des solutions à base de gestionnaires de version. Chacun ses goûts…
Commentaire par Christophe-Marie — 23 juin 2009 @ 7 h 38 min
Christophe-Marie : ce sont deux approches tout à fait complémentaires ! Ton logiciel de gestion de versions (SVN ou autre) gère les révisions d’un commit à un autre et les différences entre les versions, il est là pour administrer un tout via des branches, des dérivés…
Ici on parle de sauvegarde à la volée de fichiers (de la conf, du script, un rapport en LaTeX que tu ne veux pas perdre…). Sur une machine, tout n’est pas projet informatique et tout n’est pas géré par un SVN… Cela reste, du moins je pense, différent et facile d’accès.
Si tu modifies la configuration de ton logiciel de versions, bah tu obtiens une sauvegarde de l’ancienne version :)
Commentaire par Phil — 23 juin 2009 @ 7 h 45 min
Salut !
Continue comme ça :) je suis en plein apprentissage de vim et tes astuces sont vraiment sympas !
Merci.
Commentaire par Spip — 27 juin 2009 @ 9 h 44 min
J’apprends aussi ^^
Commentaire par Phil — 27 juin 2009 @ 21 h 12 min