Vous en avez marre des espaces en fin de code qui ne servent à rien ?
Vous voulez vous conformer à beaucoup de pratiques classiques (Apache, horde, etc.) ?
Voici le petit truc qu’il vous manque, à ajouter dans votre fichier vim :
" Ce code mettra en surbrillance rouge vif
" tous les espaces inutiles après la fin de code :
highlight WhitespaceEOL ctermbg=red guibg=red
match WhitespaceEOL /\s\+$/
Ce code de configuration vim va mettre en rouge tous les espaces inutiles en fin de code.
J’ai voulu reprendre mes deux articles qui parlaient de Script-fu : le premier pour débuter ici, et le second qui passe à peine à la vitesse supérieure, qui explique l’assignation des variables ici.
Mais comme je suis un grand fan de Python et que tout a été fait pour pousser Python en avant dans Gimp, j’en ai profité.
Trois heures de travail avant d’y arriver.
Première chose à savoir :
On parle de script Python, mais ce sont des plugins.
Donc, lorsqu’on les installe, il faut les mettre dans le répertoire ~/.gimp/plug-ins/ et non pas ~/.gimp/scripts/.
Vous les installez et vous les lancez à partir de là vous avez tout ce qu’il vous faut.
Si vous avez lu ces trois informations avant de vous lancez dans l’aventure je vous aurais probablement fait gagner au moins une demi-journée.
Enfin, pour que la ligne de commande fonctionne sur les dernières versions de Gimp (2.6.8) à l’heure de l’écriture de cet article, il y a plein d’articles obsolètes sur le net. Je vais encore vous faire gagner des heures de recherche :
Voici un exemple complet d’un lancement en ligne de commande qui fonctionne :
Ce plugin transforme une image PNG en la même image, mais en transparente et en couleurs indexée.
Il n’est pas 100% terminé, car la couleur de transparence est codée en dur, mais il fonctionne très bien pour peu que votre couleur soit le blanc 🙂
Pour ce qui est de la méthode, je me suis très fortement inspiré de ce site.
Si je vous ai aidé n’hésitez pas à me laisser un message !
Voici une petite image qui m’a bien fait rire :
Si vous avez des commentaires, ou d’autres images dans le genre, n’hésitez pas à laisser un commentaire en conséquence !
Voici le vrai, l’ultime clavier de geek, celui que tout le monde attend avec impatience : j’ai nommé : le DAS Keyboard Ultimate S (S pour « Silent »).
Attendez, je crois que je ne l’ai pas écrit avec les lettres qui vont avec :
DAS Keyboard Ultimate S
Voici les photos :
Pour résumer, le DAS Keyboard est aux claviers ce que les voitures de collection sont aux voitures : il n’y que les connaisseurs qui pourront apprécier, les autres ne sauront que critiquer de manière négative.
Bien sûr, dans ce cadre, plein de personnes vont penser « un clavier sans rien d’écrit dessus, n’importe quoi ! ».
Ou encore : « mais bon sang qu’est-ce qu’il est bruyant ! ».
Euh oui et non.
D’une part, je dois avouer que le toucher est absolument, comme tout le monde le dit (en Anglais ou en Allemand, mais pas en Français), excellent. C’est comme certaines bonnes choses : ça ne s’explique pas. Il n’y a qu’en pratiquant qu’on peut comprendre.
En fait, si on se renseigne vraiment, on peut comprendre techniquement le pourquoi de cette sensation si agréable. Notamment, concernant le principe des switches « Cherry MX ». Pour la note, j’ai acheté la version « Silent », donc celle qui a les switches « Cherry MX » bruns, et non pas bleus. Ils sont nettement moins bruyants, mais je dois avouer qu’ils sont tout de même bien plus bruyants que la plupart des claviers. Le son n’est pas si désagréable pour moi, disons même… surtout pour moi parce que je suis assez sensible au son. Et quand on développe, tout son qui pollue me gêne.
Clavier Azerty qui n’est pas prévu pour la programmation
Le seul hic ? Le seul gros hic ? Il n’est pas prévu pour la programmation. Avec notre super bonne mentalité et nos super bonnes idées, la plupart des caractères utiles en programmation sont difficilement accessibles. Comparez un clavier « Qwerty » et ses accolades, {} ou encore ses crochets [], c’est très facile à atteindre, alors qu’avec un clavier « Azerty », on ne peut taper que sur la touche AltGR, qui est située à droite. Donc on est obligé d’utiliser la main droite, même dans les cas où on devrait pouvoir se servir des deux mains.
Bon bref, pour l’instant, j’aime beaucoup taper avec, j’ai l’impression de faire nettement moins de fautes, et vraiment je n’ai pas à me plaindre. Par contre, c’est un fait, il n’est pas prévu pour le développement. En effet, sous vim, où on n’a pas le droit à l’erreur quand on tape les ordres, c’est assez frustrant, parce que je fais très souvent des retours en arrière, des « undo ». Disons, peut être qu’avec le temps, si j’arrive à me faire aux touches, je me détacherai définitivement les yeux du clavier, et je reviendrai éditer cet article (sourire).
Attention, par rapport au prix : il faut savoir au moins une chose : ce clavier a la possibilité de faire du « full N key rollover ». Pour simplifier au maximum la chose, disons que si on tape plusieurs touches en même temps, comme c’est le cas pour beaucoup de jeux, le clavier sait toujours parfaitement gérer tout ça et vous n’aurez jamais plus le fameux problème du clavier qui « stoppe » en bipant. C’est ce genre de détails qui font toute la différence entre un clavier à 15 euros et un clavier à 150 euros. Euh… oui oui il vaut bien 150 euros.
Exemple concret : un mapping sous vim c’est ça : imap ooo Olivier
map signifie : lorsque je taperais ooo tu le transformeras en Olivier.
Le petit i de imap juste avant, signifie « uniquement en mode insertion« .
Pourtant, il peut arriver qu’en mode insertion ça ne fonctionne pas ! Si c’est votre cas, il y a une solution très simple : essayez de vous mettre en mode « nopaste » : essayez de taper l’ordre :
:set nopaste
Puis mettez vous en mode insertion soit « i » et ré-essayez. Ca devrait fonctionner.
Moi, je le fais par défaut (= j’ai ajouté :set nopaste dans mon fichier de configuration ~/.vimrc) au moins je ne suis pas ennuyé.
J’ai posé la question et j’ai eu la réponse sur stackoverflow ici.
L’explication est à peine plus longue. En fait, sous vim, tout ce qu’on tape est analysé. Si on a fait un imap ooo test, alors, lorsqu’on fait un copier-coller, et que dedans il y a ooo, alors vim va automatiquement faire la transformation. Dans presque tous les cas, lorsqu’on fait un copier coller, on ne veut pas que ça soit modifié ! Donc il faut préciser à vim : attention, je vais faire un « coller », alors s’il te plait, désactive tes « mappings ». L’ordre est très simple, il suffit de se mettre en mode paste et donc de donner l’ordre : :set paste. Là où on peut être dérouté, c’est que, justement, par défaut, vim est en mode paste, autrement dit tous les mappings clavier sont désactivés !
C’est une configuration pour les débutants, mais avec ce que je vous ai appris et tous les liens sur vim, vous n’êtes plus un débutant, pas vrai ?
Il vous suffit donc d’ajouter :set nopaste dans votre fichier de configuration ~/.vimrc. Les (rares) fois où vous aurez un copier coller particulier (par exemple avec la souris), il vous suffira de faire un
:set paste
puis juste après le coller, de dire qu’on a fini, et de ré activer les mappings :
Comment faire de manière pratique, sous vim, pour s’assurer que la ligne : * fichier decision.php
contient vraiment le bon nom du fichier.
C’est très simple (comme tout dans vim), mais il suffit de le savoir (comme tout dans vim) :
Je vais détailler pas à pas l’explication de la macro et au final la mettre en entier :
Il faut donner l’ordre en ligne de commande = deux points = « : »
Donc : :
Il faut lui dire de rechercher = pourcent = « % »
Donc : :%
Il faut lui dire que c’est une chaine qu’on recherche = s = « s »
Donc : :%s
Ensuite on précise qu’on a fini l’ordre = slash = « / »
Donc : :%s/
Ensuite on précise le premier paramètre = chaine à rechercher = « fichier » = « fichier »
Donc : :%s/fichier
Ensuite on précise que le premier paramètre est une expression régulière qui doit contenir la chaine à rechercher, mais aussi tout ce qui suit = « :%s/fichier \(.*\) »
Donc : :%s/fichier \(.*\)
NB : on est obligé de mettre des antislashes \(.*\) devant les parenthèses pour dire que ce sont des caractères spéciaux qui doivent être interprétés comme des commandes.
Puis premier paramètre = fini = slash = « / »
Donc : :%s/fichier \(.*\)/
Puis le second paramètre = ce qui va être remplacé. Là c’est comme pour les parenthèses juste au dessus : on précise que c’est un « calcul » a effectuer = signe « = » mais comme c’est un caractère à interpréter on est obligé de mettre l’antislash soit \=.
Donc : :%s/fichier \(.*\)/\=
NB : à partir du signe « \=« , vim sait que ce qui suit est un calcul, donc chaque parenthèse sera déjà interprétée comme un ordre, il n’y aura pas besoin de mettre d’antislash pour les caractères spéciaux telles que les parenthèses, et ce sur tout le paramètre en entier.
Ensuite on lui passe le calcul de l’expression que j’ai fait ainsi (à vous de l’adapter pour vous) : renvoyer le nom du fichier = expand('%') =» ici moi j’aurais « ./json_decision.php » ce qui ne me convient pas. Je voulais uniquement le nom du fichier, sans quoi que ce soit derrière. On peut préciser exactement quelle partie du nom on veut : tapez « :help expand » pour avoir toutes les possibilités. Ici, moi, je ne voulais que le nom du fichier sans rien derrière. Donc j’ai juste tapé : expand('%:t')
Puis second paramètre = fini = slash = « / »
Donc : :%s/fichier \(.*\)/\='fichier '.expand('%:t')/
Enfin en troisième paramètre, les options : il n’y en a aucune mais on aurait pu mettre « g » pour dire de faire ça de manière globale, soit : :%s/fichier \(.*\)/\='fichier '.expand('%:t')/g
Mais comme je ne veux le faire qu’une seule fois, voici ma ligne finale :
:%s/fichier \(.*\)/\='fichier '.expand('%:t')
Donc en pratique : je liste tout un répertoire de fichiers php, que j’ouvre sous vim, et j’y applique une macro qui fait :
– rechercher/remplacer que je viens d’expliquer ;
– sauvegarde du fichier et on passe au suivant (« wn« ).
Ainsi, j’ai passé tous mes fichiers et tout a fonctionné comme sur des roulettes : je suis sûr que dans tout mon code, dans le commentaire de début, le nom du fichier est en adéquation avec le vrai nom !
Si vous avez des suggestions ou commentaires n’hésitez pas !
J’ai vu cet exceptionnel exemple de plugin ici.
Petite parenthèse : regardez d’ailleurs le site vimcasts.org, c’est vraiment un site exceptionnel pour tous ceux qui veulent apprendre des astuces géniales de vim.
Je le télécharge, et voici les fichiers que je trouve dedans :
Je me dis « bon sang comment l’installer dans vim ? ».
En pratique, rien de plus simple. Très souvent, dans votre répertoire « home » (auquel vous accédez en tapant le tilde en ligne de commande : ~), concernant vim, il y a un dossier caché qui commence par un point : « .vim » (n’oubliez pas le point au début).
Allez dans ce dossier et regardez s’il y a un sous-dossier plugin. S’il n’y en a pas, créez le. Moi qui suis sous Windows, et qui m’en éloigne de plus en plus jour après jour, j’ai installé cygwin et mon « home » est dans C:\cygwin\home\Olivier. Voilà ce que ça donne après avoir crée le bon dossier :
Ensuite il vous suffit de copier simplement les dossiers du plugin dans le répertoire « ~/.vim/plugin » et… tout fonctionne (dans mon cas c’est donc C:\cygwin\home\Olivier\.vim\plugin) !
Dans cet exemple, je veux récupérer le fichier : pysoko.tar.bz2
qui est sur le PC distant dans le répertoire /var/www/html/
sachant que le PC distant est nommé : olivierpons.fr.
En fait le problème est super simple : lorsque le programme scp se connecte pour faire la copie, un shell du distant nommé olivierpons.fr est ouvert, et par conséquent tout ce qu’il y a dans la configuration du shell est exécuté, donc tout ce qu’il y a dans le fichier de configuration du shell .bashrc.
Pour faire simple, si vous avez fait un « echo » quelque part dans le fichier de configuration du shell .bashrc, changez le par tty -s && echo ".
L’explication est dans ce site génial, qui explique tout sur le SCP, encore mieux que mon article, qui sort pourtant numéro un sur google France lorsqu’on tape scp linux
Super facile : l’outil tr.
Exemple concret : je veux lister les fichiers d’un répertoire et tous les passer à vim, par exemple pour y appliquer une macro.