lundi 8 novembre 2010

VIM : Affichage des caratères spéciaux

Dans vim il est possible de rechercher tous les caracteres non-imprimables comme ceci :
/[^[:print:]]
De meme il est possible d'afficher tous les caracteres (même non imprimable) avec :
:list

mercredi 2 juin 2010

Super-puissant pour les non-linuxiens !

$ cat ~/.inputrc
"\e[A": history-search-backward
"\e[B": history-search-forward
"\e[C": forward-char
"\e[D": backward-char

Permet d'utiliser :
  • les fleches haut/bas pour rechercher dans l'historique
  • les fleches gauche/droite pour deplacer le curseur sur la ligne
La productivité sera de retour... :)

jeudi 30 juillet 2009

Internal Field Separator

En bash il y a une variable speciale, super importante, pour qui developpe des scripts shell : IFS
Comme son nom l'indique c'est le separateur de champs. Il vaut <space><tab><newline> par defaut.

Chacun de ses caractères sont considérés comme des séparateurs de champs.
On peut donc faire des choses comme :
shell> IFS=";"
shell> set -- "premier;deuxieme;troisieme;quatrieme"
shell> echo $3
troisieme

Je pourrai detaillé, si l'envie m'en prend, plus à fond les enormes possibilités que nous offre cette variable spéciale. Mais l'objet de mon post n'est pas là. En effet je suis aussi un peu un malade de la structuration de mon code et quand pour mes besoin j'avais besoin que le separateur de champs soit uniquement je devais faire :
shell> IFS="
"
shell> for i in $(cat foo.txt);do echo -- $i --; done

Or je detestais voir cette commande sur deux lignes, et l'utilisation de IFS="\n" ne fonctionnait pas. Alors comment faire ? Et bien jusqu'à récemment rien. Jusqu'à ce que je découvre cette nouvelle possibilité :
shell> IFS=$'\n'
shell> for i in $(cat foo.txt);do echo -- $i --; done

Notez bien l'utilisation des simples quotes !

Et me voila heu-reux ! E-R-E !!!

Fucking Encodage !!!

Tout le monde (ou presque) a deja entendu parler du systeme d'encodage des caracteres...
Pour nous Francais nous jouons surtout entre iso-8859-15 (a.k.a. latin-9) et utf-8.
Je m'affranchirai ici de décrire les considérations techniques sous-jacentes, mais je vais vous expliquer comment, dans VIM, afficher correctement les caracteres. Oui, ras le bol des caracteres foireux, des superpositions de caracteres, des doubles backspace pour effacer un seul caractere !!!!

Prérequis :
connaitre le type d'encodage de vos fichiers (pour ceux deja existant)
connaitre le type d'encodage utilisé par votre terminal (exemple avec PuTTY : Dans Settings->Window->Translation)

Parametres VIM :
choisir l'encodage pour l'affichage des caracteres/du fichier
set encoding=iso-8859-15
choisir l'encodage pour l'encodage des caracteres/du fichier
set fileencoding=iso-8859-15

On remarquera alors que pour une chaîne d'encodage uniforme i.e. tous les elements que sont le fichier (fileencoding), la lecture du fichier (encoding) et l'affichage sur le terminal (translation dans putty) sont parametres sur le meme encodage de caracteres, on s'affranchi alors de bien des miseres...

mardi 28 juillet 2009

Fucking Carriage Return !!!

Ras le bol de chercher comment supprimer les "carriage return" dans un fichier... voici donc un topo !

Chaque OS a sa propre facon de revenir à la ligne :

  1. DOS/Windows => [CR][LF] ou \r\n
  2. Unix/Linux => [LF] ou \n
  3. Mac => [CR] ou \r



Le cas le plus courant pour moi est d'avoir un fichier sous Linux provenant de Windows. Ca pose pas mal de problemes et si vous lisez ces lignes c'est que vous les connaissez deja ;)
Il y a plusieurs moyen de passer du \r\n à \n :

  1. bash => sed -i 's/^M//g' monfichier.txt
  2. vim => :%s/^M//g


sachant que le ^M est UN SEUL caractere que l'on fait en tapant Ctrl-V Ctrl-M

mercredi 7 mai 2008

Equivalent du 'is_digit()' php en javascript

Petite fonction simple et astucieuse à ajouter à votre lib js perso :

function is_digit(num) { return RegExp('^[0-9]+$','g').test(num); }

lundi 17 mars 2008

BRE vs. ERE

Vous utilisez Unix/Linux.
Vous connaissez (un peu) les expressions rationnelles ("regular expression" en anglais).
Pourtant certains mystères persistent lors de l'utilisation... et là vous vous rendez compte qu'il existe plusieurs type d'expressions rationnelles !!! si si je vous jure !

les BRE (Basic Regular Expressions) :
Ici les meta-caractères doivent être précédé d'un anti-slash pour être "activé".
Ils sont considérés comme des caractères normaux sinon...
exemple : avec la commande "grep -e"

les ERE (Extended Regular Expressions) :
Ici les meta-caractères sont "activé" par défaut.
Il sont considérés comme des caractères normaux s'il sont précédé d'un anti-slash (on dira couramment que le caractère est échappé).
exemple : avec la commande "grep -E"

Je n'ai pas trop le temps pour faire un tutorial détaillé.
J'en resterais donc là... pour l'instant !