-
-
Save textarcana/4611277 to your computer and use it in GitHub Desktop.
# Enable syntax-highlighting in less. | |
# Last tested on CentOS 6.3. | |
# | |
# First, add these two lines to ~/.bashrc | |
# export LESSOPEN="| /usr/bin/src-hilite-lesspipe.sh %s" | |
# export LESS=" -R " | |
sudo yum -y install boost boost-devel ctags | |
wget http://springdale.math.ias.edu/data/puias/unsupported/6/x86_64/source-highlight-3.1.6-3.puias6.x86_64.rpm | |
source-highlight-3.1.6-3.puias6.x86_64.rpm | |
sudo yum -y install source-highlight |
# Enable syntax-highlighting in less. | |
# | |
# First, add these two lines to ~/.bashrc | |
# export LESSOPEN="| /opt/local/bin/src-hilite-lesspipe.sh %s" | |
# export LESS=" -R " | |
sudo port install source-highlight |
Awesome!
I installed source-highlight using the cygwin installer, works great in mintty on Windows.
This is great! Note that, for homebrew, the script is located at:
/usr/local/bin/src-hilite-lesspipe.sh
Neat. on mac os x I have added the following to my less setup in .bashrc
### LESS ###
# Enable syntax-highlighting in less.
# brew install source-highlight
# First, add these two lines to ~/.bashrc
export LESSOPEN="| /usr/local/bin/src-hilite-lesspipe.sh %s"
export LESS=" -R "
alias less='less -m -N -g -i -J --underline-special --SILENT'
alias more='less'
Thanks for the pointer to this. very helpful
Thanks @textarcana & @RubyTester!
A little different in on my arch ~/.zshrc
### LESS ###
# Enable syntax-highlighting in less.
# brew install source-highlight
# First, add these two lines to ~/.bashrc
export LESSOPEN="| src-hilite-lesspipe.sh %s"
export LESS=" -R "
alias less='less -m -N -g -i -J --underline-special --SILENT'
alias more='less'
That's awesome.
I've set mine up with highlight
(instead of source-highlight
) like this:
### Terminal Syntax Highlighting
# Setup: "brew install highlight"
# Pipe Highlight to less
export LESSOPEN="| $(which highlight) %s --out-format xterm256 --line-numbers --quiet --force --style solarized-light"
export LESS=" -R"
alias less='less -m -N -g -i -J --line-numbers --underline-special'
alias more='less'
# Use "highlight" in place of "cat"
alias cat="highlight $1 --out-format xterm256 --line-numbers --quiet --force --style solarized-light"
# Setup JSON Syntax Highlighting
# Copy js.lang to json.lang with the following command
# cp "$(dirname $(brew list highlight | head -n 1))/share/highlight/langDefs/js.lang" "$(dirname $(brew list highlight | head -n 1))/share/highlight/langDefs/json.lang"
I found highlight
gave me better options and control over the output.
Thanks for sharing your config @F1LT3R!
@F1LT3R Thanks! The Solarized color scheme of highlight
is a lot better than the default of source-highlight
, which had black text that was unreadable on a dark console.
for aquatic shell jockeys
# ~/.config/fish/config.fish
set hilite (which highlight)
set -x LESSOPEN "| $hilite %s --out-format xterm256 --quiet --force "
set -x LESS " -R"
# ~/.config/fish/functions/less.fish
function less
command less -m -N -g -i -J --underline-special --SILENT $argv
end
@F1LT3R Any ideas how to tell highlight
also to interpret dotfiles, and only those, preferably as sh
or a similar syntax?
Actual way to make less work on fish shell since @bennypowers solution didn't work for me:
# ~/.config/fish/config.fish
# or
# ~/.config/omf/init.fish
# If you're using oh-my-fish
set hilite (which src-hilite-lesspipe.sh)
set -x LESSOPEN "| $hilite %s"
set -x LESS " -R -X -F "
First install on Linux Mint or Ubuntu
apt-get install source-highlight
add at end of on my arch ~/.zshrc also works on ~/.bashrc
# Enable syntax-highlighting in less.
# apt-get install source-highlight
export LESSOPEN="| /usr/share/source-highlight/src-hilite-lesspipe.sh %s"
export LESS=" -R "
alias less='less -m -N -g -i -J --underline-special --SILENT'
alias more='less'
At last I cannot put this in /etc/profile.d/xxx.sh
. I have to put these lines into ~/.bashrc
to take effect. Don't know why. I am with CentOS 7 and I am with Putty.
So how do I avoid only being able to see the top of the file because of:
source-highlight: The complexity of matching the regular expression exceeded predefined bounds. Try
refactoring the regular expression to make each choice made by the state machine unambiguous. This
exception is thrown to prevent "eternal" matches that take an indefinite period time to locate.
printed to stderr?
Can there be some sort of "if highlighting fails, just do a normal less"?
Use Vim as PAGER https://github.com/rkitover/vimpager
The problem with src-hilite-lesspipe
and friends is that if you use https://github.com/wofr06/lesspipe so that it opens binary files, using a such LESSOPEN breaks it.
So I've defined something like in my .bashrc
:
lesscolors()
{
env LESSOPEN='| /usr/share/source-highlight/src-hilite-lesspipe.sh %s' \
LESS=' --RAW-CONTROL-CHARS ' \
$(which less) $@
}
less()
{
less=$(which less)
has_file=false
all_text=true
for arg in $@; do
if [[ "$arg" != -* ]] && [ -e "$arg" ]; then
has_file=true
enc=$(file -b --mime-encoding "$(realpath $arg)")
if [[ "$enc" != *"-ascii" ]] && [ "$enc" != "utf-8" ]; then
all_text=false
break
fi
fi
done
if [ $has_file == true ] && [ "$all_text" == true ]; then
less=lesscolors
fi
$less $@
}
It can indeed make it more complex, but it works for most of cases, so it will allow to use both default lesspipe (i.e. to open pdf or zip files) while it will colorize the text ones.
echo 'good luck with that' | less
On fish shell
what worked for me was:
$ brew install source-highlight
$ vim ~/.config/fish/functions/less.fish add the following content
function less
src-hilite-lesspipe.sh $argv | less -N
end
$ source ~/.config/fish/config.fish
$ less
For dark displays use the esc256 style in src-hilite-lesspipe.sh
:
#! /bin/bash
for source in "$@"; do
case $source in
*ChangeLog|*changelog)
source-highlight --failsafe -f esc256 --lang-def=changelog.lang --style-file=esc256.style -i "$source" ;;
*Makefile|*makefile)
source-highlight --failsafe -f esc256 --lang-def=makefile.lang --style-file=esc256.style -i "$source" ;;
*.tar|*.tgz|*.gz|*.bz2|*.xz)
lesspipe "$source" ;;
*) source-highlight --failsafe --infer-lang -f esc256 --style-file=esc256.style -i "$source" ;;
esac
done
( sed 's,esc,esc256,g'
will help ;)
2020 update I think that bat(1) replaces all of this and that one should use bat
going forward instead of the less / source-highlight combo. https://github.com/sharkdp/bat#syntax-highlighting
And here's how to install source-highlight with HomeBrew (thx Kastner):
brew install source-highlight