less + Pygments

June 25, 2015

Syntax highlighting is awesome; colours convey extra information (thanks to Kurt for convincing me!). So of course it would be awesome to have less do it too when using a terminal.

Luckily, less provides a hook via the LESSOPEN environment variable. And Pygments provides nice-looking syntax highlighting (this Web site uses it too).

# change to your favourite style
export SOURCE_HIGHLIGHT_STYLE=/home/.../esc-solarized.style
# obviously, you'll need to arrange for "pygmentize" to be installed;
# consult your distribution's package manager, or PyPI.
export LESSOPEN="| pygmentize -f terminal -O style=native -g %s"
# I find I need -X
export LESS='-FXR'
# ...but do *not* want -X for man-pages
export MANPAGER="less -+X -is"

This tells less to pipe every file you page through pygmentize. Occasionally, you may run across a file that Pygments can’t deal with properly; no problem just use: cat file | less. less doesn’t use the LESSOPEN thing when it’s getting data piped to it.

Of course, you’re not done yet! You’ll want to get Solarized working and make your terminal-emulator of choice use Source Code Pro but that’s for another post I suppose.

p.s. Thanks to Kurt for help getting this working…