Situation
Ayant récemment rejoint le monde Linux (Ubuntu Edgy), j’ai longtemps cherché LA bonne application d’édition de code orientée Web. Mon besoin est notamment d’éditer des pages sur le serveur avec un outil de synchronisation local à l’enregistrement, de type Ultraedit sous Windows.
Voici la liste des solutions testées :
- fuse et curlftpfs
- solution pratique pour accéder à des répertoires distants dans son home : fuse
- problèmes récurrents de perte de connexion et de fiabilité des transferts (la version utilisée était en beta sous Edgy, elle devrait être plus stable sous Feisty). Je joins de ce fait le script utilisé qui pourrait être utile à l’avenir : Monte_FTP.sh.
- Anjuta, jedit, Kate, KWrite, Quanta+, Eclipse
- soit trop simples, soit trop compliqués, les editeurs testés ne comportaient pas (de mon expérience) de solution pour synchroniser, ou parfois ouvrir, les fichiers distants en local.
- vi et autres emacs
- le retour à la ligne de commande est difficile après plusieurs années d’éditeur de texte riche...
- wine + Ultraedit
- la fonction de lecture / écriture FTP ne fonctionne pas
- Screem : la solution presque parfaite
- screem se greffe sur le module gnome-vfs et permets l’ouverture des comptes ftp créés dans les signets de Nautilus. Le problème de type mime attribués aux répertoires distants dans gnome-vfs a été corrigé dans la version 2.18 de gnome-vfs (feisty).
- permets la synchronistation des comptes ftp distants mais pas dans le sens descendant
- le chargement du profil est extrêmement long après quelques jours d’utilisation
- gedit : retour aux outils simples et paramétrables, c’est finalement cette solution qui est apparue à la fois la plus stable et la plus modulaire pour répondre au besoin
Gedit
Gedit est l’éditeur de texte intégré nativement au bureau gnome.
Cette application aux fonctionnalités simples permets, comme la plupart des outils sous Linux, une personnalisation avancée des préférences et l’édition de plugins sur mesure... au prix d’un peu de main dans le code.
Afin de répondre à mon besoin donc j’ai utilisé les outils externes de gedit :
- > Outil > Outils Externes > Nouveau
- Entrer la Description de l’outil et la touche de raccourci associée
- Entrée : document actuel
- Sortie : Afficher dans le panneau inférieur
- Applicabilité : Uniquement les fichiers distants
- Commandes : copier/coller le code source ci-dessous en modifiant la variable rep contenant le répertoire d’enregistrement local
Gedit utilise des variables d’environnement disponibles dans le contexte d’édition de l’article et du fonctionnement du plugin :
- $GEDIT_CURRENT_DOCUMENT_URI : chemin et nom complets du document
- $GEDIT_CURRENT_DOCUMENT_NAME : nom du document
Les commandes du plugin permettent ainsi l’enregistrement du fichier dans :
- le répertoire ftp distant (par défaut gedit ouvre les fichiers ftp en lecture seule)
- le répertoire local ( /home/nom/www par exemple) auquel est ajouté l’adresse ftp du fichier actuel (/home/nom/www/site dans le cas de ftp://login@site/repertoire/fichier ).
Code de l’outil
#!/bin/bash
#Définition du répertoire de travail
rep="/home/pvincent/Desktop/www"
#Copie locale temporaire
if ! [ -d "$rep/tmp" ];
then mkdir "$rep/tmp";
fi
cat $1 > $rep/tmp/$GEDIT_CURRENT_DOCUMENT_NAME
#Copie distante (fichiers ftp ouverts en lecture seule)
echo "DISTANT : gnomevfs-copy" $rep/tmp/$GEDIT_CURRENT_DOCUMENT_NAME
gnomevfs-copy $rep/tmp/$GEDIT_CURRENT_DOCUMENT_NAME $GEDIT_CURRENT_DOCUMENT_URI
#Extraction du nom du site
export HOTE=`echo $GEDIT_CURRENT_DOCUMENT_URI | sed -e 's/.*@\(.*\)\/.*/\1/gi'`
#Création du répertoire si non existant
if ! [ -d "$rep/$HOTE" ];
then mkdir -p "$rep/$HOTE";
fi
#Copie locale
echo "LOCAL : rcp " $rep/$HOTE/$GEDIT_CURRENT_DOCUMENT_NAME
rcp $rep/tmp/$GEDIT_CURRENT_DOCUMENT_NAME $rep/$HOTE
#Effacement de la copie locale temporaire
gnomevfs-rm $rep/tmp/$GEDIT_CURRENT_DOCUMENT_NAME