- Publié le 08 Septembre 2009 à 23:30
J'ai plusieurs fois eu besoin de faire des substitutions dans tous les fichiers ouverts dans vim. J'avais cherché dans les flags de la commande substitute (:s) sans succès et donc systématiquement je contournais le problème à coup de lignes de bash à base de find, sed, grep et compagnie. Mais je suis tombé par hasard sur la commande :bufdo en cherchant à corriger quelques petits bugs dans eZVim le plugin vim pour eZ Publish. Du coup rien de compliqué, il suffit de préfixer toute commande par bufdo pour l'appliquer sur tous les buffers ouverts, par exemple :
:bufdo! %s/cherche/remplace/g
Le point d'exclamation permet de forcer le passage d'un buffer à un autre sans sauvegarder son contenu. Et évidemment ça marche pour autre chose que la substitution. Il est également possible d'exécuter plusieurs commandes sur chacun des buffers en les séparant avec un pipe (|), par exemple pour corriger une indentation en fonction des réglages de vim, supprimer les espaces inutiles en fin de ligne et sauvegarder le fichier, la ligne suivante devrait faire l'affaire :
:bufdo retab | %s/ *$//g | w
Il existe également :tabdo (pour les onglets), :windo (pour les fenêtres vim) et :argdo (pour les arguments de la ligne de commande).
- Publié le 17 Janvier 2009 à 00:10
And eZVim is not dead ! I've just released a new version of eZVim, the vim plugin for eZ Publish. This version brings some new important features :
- Quick documentation search : ALT-D on any word in a template file will search for this word in the online documentation
- Specific syntax highlighting for eZ Publish templates instead of the Smarty one used by default (based on it by the way)
- Specific syntax highlighting for eZ Publish ini files and overrides (instead of the dosini syntax file for *ini files and the PHP one for *.ini.append.php files)
- The class view sidebar now depends on the eZDevtools extension instead of SmileClasses. eZDevtools is a rewrite of SmileClasses for eZ Publish 4.x. You only need it to use the class view sidebar.
For more (download, setup, documentation, ...), please visit the project page.
- Publié le 08 Avril 2007 à 22:13
Je viens de mettre en ligne la toute première version du plugin eZVim sur la plateforme eZ Projects et dans les contributions externes eZ publish. vim.org est inaccessible au moment où j'écris ces lignes, mais je l'ajouterai aussi là bas dès que possible.
eZVim est un plugin vim sous licence GPL qui ajoute à cet éditeur quelques fonctionnalités pour le développeur eZ Publish inspirées du plugin Smile eZ Plugin. Pour l'utiliser, il faut vim 6 ou supérieur, avec le support des scripts en python. Sous Ubuntu et Debian, il suffit d'installer le paquet vim-pyhon.
Classes View
Une barre verticale, le Classes View, permet de voir rapidement, les groupes de classes, les classes et leurs attributs. Cette barre affiche les informations les plus pertinentes (identifiant numérique, identifiant, classe, datatype, ...). Les attributs obligatoires sont mis en valeur et préfixés par le signe +. Des screenshots sont en ligne sur la page gallery du projet.Plusieurs raccourcis sont utilisables dans cette barre :
-
+ ouvre l'élément courant
-
- ferme l'élément courant
-
* ouvre tous les éléments
-
= ferme tous les éléments
-
d ouvre le moteur de recherche sur ez.no pour le datatype de l'attribut sur la ligne courante
-
v permet de visualiser le groupe ou la classe sur la ligne courante.
-
e permet d'éditer le groupe ou la classe sur la ligne courante.
Cette fonctionnalités nécessite l'installation de l'extension eZ Publish SmileClasses disponible sur le site du plugin Smile eZ Plugin.
Abbréviations vim
Les abbréviations vim permettent de taper quelques lettres et l'éditeur les remplace automatiquement par la séquence définie. Par exemple, en tapant ezfcls (Fetch Content List Sort) suivi d'un espace, vim va automagiquement remplacer cette séquence par :
fetch(content, list, hash('parent_node_id', __ ,
'class_filter_type', include,
'class_filter_array', array( __ ),
'sort_by', array( __ ),
'offset', $view_paremeters.offset,
'limit', __ ))
Les éléments à complèter par le développeur sont remplacés par la chaîne " __ " qui est mise en valeur par l'éditeur. Chaque paramètre est sur une ligne, il est ainsi extrêmement simple de supprimer les lignes qui seraient superflues ou de rajouter des éléments moins courants (limitation, main_node_only, ...).
A venir
D'autres fonctionnalités sont à venir, en particulier :
-
Une coloration syntaxique spécifique pour les templates eZ Publish
-
La validation syntaxique des templates dans vim
-
Custom operators view qui, à la manière du Classes View, affiche les extensions fournissant des opérateurs ainsi que les prototypes de ces opérateurs.
- Publié le 04 Avril 2007 à 23:54
Mon projet de plugin vim pour eZ Publish avance doucement mais surement. Il faut dire qu'à la base je connais peu le langage de script de vim et à peine plus Python, je butte parfois sur des choses toutes bêtes, mais c'est comme cela qu'on apprend... Mais après quelques soirées, je suis assez content, car la partie Classes View qui interface l'extension SmileClasses (la même utilisée par le plugin pour Eclipse) est en très bonne voie. Une image vaut mieux qu'un long discours :
On voit les 4 groupes de classes, Content et Users sont dépliés et, dans Content, la classe Page est elle aussi dépliée. Pour le moment, l'affichage est géré par les raccourcis classiques de vim sur les fold .
Ce qu'il manque maintenant, c'est un peu de coloration syntaxique pour y voir plus clair et quelques variables/paramètres pour la configuration (adresse du site, largeur de la barre verticale, ...). J'espère pouvoir aussi ajouter des raccourcis pour ouvrir un navigateur directement sur les interfaces de visualisation, d'éditions ou de documentation des différents éléments...
Ne cherchez pas de lien pour télécharger ce plugin, en l'état, il n'est pas encore tout à fait utilisable, il y a quelques bidouilles à faire pour l'utiliser mais ça devrait arriver rapidement et très probablement sous licence GPL.
- Publié le 28 Mars 2007 à 23:54
J'en parlais récemment lors d'un déplacement à Levallois, j'ai vraiment envie d'avoir un plugin vim dédié au développement eZ Publish similaire à celui lancé par Smile pour Eclipse, car il y a de bonnes idées et parce que franchement Eclipse c'est pas mon truc du tout... Ce qui m'intéresse surtout dans un premier temps, c'est la fonctionnalité ClassView et éventuellement la vérification syntaxique des templates à la sauvegarde ou en lançant une commande. Je pense aussi intégrer quelques abréviations Vim permettant d'insérer rapidement quelques constructions syntaxiques courantes (fetch list, node, tree, ...).
Vim dispose d'un langage de script permettant de manipuler les différents éléments du programme (configuration, buffer, fenêtre, ...) et d'extensions permettant d'utiliser des langages plus avancés dont Ruby, Python, TCL et Perl. Je connais mal Perl et pas du tout les 3 autres, mais je suis assez attiré par Python. Je me suis donc lancé dans un aperçu rapide de ce langage grâce au très bon livre Langages de script sous Linux de Christophe Blaess et pour le moment, je trouve ce langage très élégant et plutôt agréable à utiliser... Bon j'ai juste pondu 18 lignes de code très inspirées d'un petit hack permettant de poster sur un blog Wordpress depuis Vim. Pour le moment mon code permet d'afficher dans un buffer vim les groupes de classes, les nom des classes et leurs attributs extraits du XML généré par l'extension eZ Publish SmileClasses (la même utilisée par le plugin Eclipse), c'est un début. Il faut maintenant que j'épluche un peu la documentation pour obtenir un panneau lattéral similaire à ce que fait par exemple l'extension Taglist.