Des couleurs dans ton less

Le mardi 22 septembre 2015 par Benjamin Boudoir

Quand j'ai besoin d'ouvrir un fichier que je ne modifie pas, j'aime bien less. Mais je fini souvent par ressortir emacs, parce que l'absence de coloration syntaxique est complexe sur certains documents (genre, XML le maudit).

Donc voici un petite manip bien sympatique... On commence par installer python-pygments (sous Debian et CentOS) pour récupérer pygmentize. Puis, on va se créer un fichier ~/.lessfilter :

#!/bin/sh

list=$(pygmentize -L | grep -Eo '\*\.[a-z0-9]*')
ext=$(echo "$1" | rev | cut -d'.' -f1 | rev)

echo "$list" | grep -q "^\*\.$ext\$"
if [ "$?" -eq 0 ]
then
  pygmentize -f 256 "$1"
elif [ "$1" = .bashrc ] || \
     [ "$1" = .bash_aliases ] || \
     [ "$1" = .bash_environment ] || \
     grep -q "#\!/bin/bash" "$1"
then
  pygmentize -f 256 -l sh "$1"
else
  exit 1
fi

exit 0

Qu'on rend exécutable.

Et ensuite on ajoute quelques lignes a son ~/.bashrc :

export LESS='-R'
export LESSOPEN='|~/.lessfilter %s'

Et tadam !

Je m'inspire totalement de cet article, j'ai un peu modifié le comportement du lessfilter pour que ce soit pygment qui me donne les extensions gérées et pas que je les rentre à la main.