vim, archives et fichiers distants
Par Clochix le samedi 19 juillet 2008, 20:41 - General - Lien permanent
vim fait partie de ces outils que
j'utilise tous les jours depuis des temps immémoriaux, en n'en connaissant
pourtant qu'une part infinitésimale des fonctionnalités. Si j'avais remarqué
depuis longtemps qu'il était capable d'explorer une arborescence de fichiers
(tapez view . par exemple), j'ignorais en revanche qu'il savait
aussi, nativement, ouvrir et explorer des archives ou parcourir des systèmes de
fichiers distants. Ce sont pourtant des "nouveautés" apparues en 2006 dans la
version 7, sous la forme de plugins
standards.
Accéder à une archive
Ces plugins utilisent autocommand, une fonctionnalité de vim permettant d'associer une macro à un événement, par exemple l'ouverture d'un fichier, l'enregistrement, etc. Quand vim détecte que vous demandez l'édition d'une archive, il associe automatiquement des commandes aux opérations de lecture/écriture, vous permettant de la parcourir, consulter un fichier et même le modifier directement, sans avoir à extraire l'archive puis la recréer ensuite.
Les formats reconnus, à condition que les programmes correspondants soient installés sur le système, sont compress (.Z), gzip (.gz), bzip (.bz), tar (.tar) et zip (.zip).
Explorer un système de fichier
pi_netrw
permet d'explorer des systèmes de fichier directement depuis vim. Il reconnaît
le système local, mais aussi les arborescences distantes via ftp, rcp, http,
scp, sftp, dav, rsync... Il suffit d'utiliser une syntaxe du type vim
sftp://user@host/path/de/mon/fichier.php ou vim
sctp://user@host/
Il permet d'accéder de façon transparente aux fichiers où qu'il soient, en local ou sur le réseau: les lire, les écrire (sauf si on utilise le protocole http), afficher une arborescence et s'y promener. Toutes les commandes classiques sont disponibles pour gérer l'affichage (tri...) et les fichiers (les renommer, supprimer). Malheureusement, vim va redemander le mot de passe pour chaque opération, ce qui dans la pratique n'en fait pas une solution sérieuse pour explorer des systèmes distants (pour FTP, on peut enregistrer le mot de passe dans un fichier de configuration, mais qui utilise encore FTP de nos jours ?). Cela dit, cela reste une solution pratique pour éditer un fichier distant, sans avoir à le décharger, le modifier puis le recharger. On me murmure qu'il existe des programmes avec une interface graphique qui font aussi cela très bien, mais il n'est pas toujours possible d'utiliser un clicodrôme (par exemple pour éditer des fichiers de configuration sur un serveur de production auquel on n'accède que depuis une passerelle). Bref, une astuce qui peut se révéler bien pratique.
Pfff, vivement la retraite que j'aie enfin le temps de lire la doc de vim !
Commentaires
Hello
Tu peux aussi éditer des fichiers distants avec Vim.
La syntaxe est toujours du type
protocole://user@host//path
Mais comme pour ton plugin à chaque fois que tu vas vouloir écrire dans le fichier, le mot de passe va être demandé, ce qui n'en fait pas une solution viable à long terme, mais pour des éditions ponctuelles ou de sauvetage, ça peut avoir son utilité.
http://www.vim.org/tips/tip.php?tip...
En espérant que ça aide.
En ajoutant sa clé publique ssh au serveur distant, le mot de passe n'est pas demandé à chaque fois.
Si tu as cette possibilité, alors là oui, c'est une super idée la clé publique
@Jérôme: merci pour l'astuce. J'avoue avoir dû la relire plusieurs fois pour comprendre ce que tu voulais dire. Il y a effectivement 2 syntaxes:
vim protocole://user@host/path_to_fileetvim protocole://user@host//path_to_file(avec 2 slashs entre la machine et le path). Dans la première syntaxe, le path est relatif au répertoire de l'utilisateur, dans la seconde c'est un path absolu.A la reflexion, je trouve cette fonctionnalité surtout utile pour éditer des fichiers à travers FTP (en dans ce cas le login/password peuvent être stockés dans un fichier
.netrc). A partir du moment où on a un accès ssh, se connecter directement ou monter le système distant via sshfs me semblent quant même une meilleure solution.