Mercurial. Colour output piped to less
Operating system: Mac OS 10.6.2
I'd like to be able to see colour output when piping certain commands through less.
Two examples:
I've got ls aliased to ls --color=auto
, so I'd like to be able to see colour when I do this:
ls -l | less
I've also got the color extension turned on in Mercurial, so I'd like to see colour output from:
hg diff | less
and
hg st | less
After some googling, it seems like some versions of less support either -r or -R to make this work, but no dice for me. I can't see anything in the man page that looks like what I need. (-r or -R SEEM to be the right options, but again, they don't seem to work)
Solution 1:
For mercurial, you should use the pager extension rather than piping explicitly to less. This will play nicely with the colored output options of other hg commands.
Solution 2:
I believe you have to use --color=always
for ls
if you want it to do colors even when not going to stdout
. Then use -r
on the less
command
ls --color=always -l | less -r
Solution 3:
Do:
$ hg diff --color always | less -R
I would alias "less -R" to less. I'm not sure if there's a way to provide default options to mercurial's commands so that you don't have to remember to type --color always
for hg diff
all the time.
Solution 4:
In your ~/.hgrc put:
[extensions]
color =
pager =
[pager]
pager = LESS='FRSXQ' less
quiet = True
attend = outgoing,incoming,diff,status,log,qdiff,blame,annotate,pdiff,glog
Solution 5:
If you don't want to use the Pager Extension for mercurial you can use the following command:
hg diff | cdiff