Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

is there a way to syntax highlight a file I see in Less?

actually I'm using this command to open an xml file (and sometimes a series of them)

less htmleditors/htmleditors_config.xml

or

less [multiple files]

I'd like to stay in Less (to learn that program better and to use my knowledge of :n and :p for next/previous navigation)

But it also want some kind of basic syntax highlighting – at least show the comments differently. Do you know any way to do it?

share|improve this question
add comment

9 Answers

up vote 42 down vote accepted

You can use GNU's source-highlight, as shown here:

 export LESSOPEN="| /usr/bin/src-hilite-lesspipe.sh %s"
 export LESS=' -R '
share|improve this answer
    
I retrieve the following error message when I run less ~/.zshrc. Error: src-hilite-lesspipe.sh: line 9: source-highlight: command not found. I run this on MacOSX. –  JJD Jun 4 '12 at 16:38
1  
@JJD Did you install source-highlight? –  Max Nanasy Aug 31 '12 at 6:00
3  
OSX: brew install source-highlight; export LESSOPEN="| /usr/local/bin/src-hilite-lesspipe.sh %s". Note the path change. –  Gregg Lind Apr 22 at 19:26
add comment

Using OS X 10.9 (Maverick) this would do the trick:

  • brew install source-highlight (Assuming brew is installed - http://brew.sh)
  • sudo nano /etc/launchd.conf

    setenv LESSOPEN="| /usr/local/bin/src-hilite-lesspipe.sh %s"     
    setenv LESS=' -R '
    

    (Add to /etc/launchd.conf)

  • reboot

share|improve this answer
add comment

Best of both previous answers: you can invoke system default editor from within less, by pressing v.

share|improve this answer
    
Wow! This is amazingly useful! –  dancek Aug 9 '12 at 5:57
3  
Curses that opened Nano on my Ubuntu box! –  jamesc Jan 18 '13 at 10:12
3  
Then set $EDITOR or $VISUAL to vim (or emacs, or gedit, or joe, or ed, or mined, or…). –  Daniel H Jun 5 '13 at 1:42
add comment

source-highlight has a .sh script located in /usr/share/source-highlight/*.sh. I've created a symbolic link to it with name hcat in /usr/bin.

It shows highlighted output in terminal (console) – hcat is highlighted cat.

How to:

[me@this]<bash><~> 43 
21:23 Fri Apr 19 > sudo apt-get install source-highlight

[me@this]<bash><~> 28 
21:03 Fri Apr 19 > ll /usr/share/source-highlight/*.sh
-rwxr-xr-x 1 root root 432 May  1  2012 /usr/share/source-highlight/src-hilite-lesspipe.sh*

[me@this]<bash><~> 29 
21:04 Fri Apr 19 > sudo su
root@this:/home/me# cd /usr/bin/
root@this:/usr/bin# ln -s /usr/share/source-highlight/src-hilite-lesspipe.sh hcat

[me@this]<bash><~> 36 
21:07 Fri Apr 19 > hcat test.xml
share|improve this answer
add comment

If you have GNU Source-highlight installed you can use the following command to highlight the syntax of a single file:

$ src-hilite-lesspipe.sh yourfile.xml | less -R
share|improve this answer
add comment

As others have said, you can use the power of vim. But importantly, you can do so without learning how to use vi/vim.

Vim comes with a less.vim script that works pretty well as a replacement for less, with full color syntax highlighting. It uses less keybindings (just hit 'q' to quit).

It had a few problems, so I improved it. I have a screenshot at http://huyz.us/2011/a-less-like-pager-with-color-syntax-highlighting/

share|improve this answer
add comment

I was also searching for this and found another solution using Vim: http://ubuntu-tutorials.com/2008/07/14/use-vim-as-a-syntax-highlighting-pager/

The post is rather old, so now on more recent distros vim 7.2 is shipped and the .bashrc will read: alias vless='vim -u /usr/share/vim/vim72/macros/less.vim'

share|improve this answer
1  
MacVim comes with a shell script that you can use directly, located in: /Applications/MacVim.app/Contents/Resources/vim/runtime/macros/less.sh –  Nick Jan 14 '12 at 19:23
add comment
pygmentize somefile.ex | less

or

function cless () {
    pygmentize -f terminal "$1" | less -R
}
share|improve this answer
add comment

I think that you should use a text editor. I like vim myself. That will give you LOTS of power when viewing files and then when you want to edit them you will already know the basics.

Here are some of the advantages of using a text editor (specifically vim):

  • syntax-highlighting
  • powerful movement commands
  • find
  • jump to specific location in a file (called a mark)
  • folding (useful when you just want to see function stubbs)

To open your file in readonly mode use this:

vim -R <file name>

Here is a basic navigation guide:

j - move down one line
k - move up one line
h - left one char
l -right one char

ctrl-f - forward one page
ctrl-b - back one page

/<something> - search for something
n - next of whatever you searched for
N - next (search backwards) of whatever you searched for

:q - quit
:q! - quit without saving
:w - save

Here is a link for more information:

http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

Just to recap, if you will use unix vim is pretty fundamental. I have heard that learning vim is like learning to type. It is the next most useful tool you can learn for programming.

(Just to avoid editor wars you could also look into emacs or another editor, however I personally prefer vim)

share|improve this answer
    
I second this. Vim launches as fast as less, and many of the keyboard shortcuts (e.g., search, next page, previous page) are identical. –  Jeremy W. Sherman Feb 10 '11 at 18:20
2  
Just FYI, on a lot of systems, view is an alias for vim -R. –  Andrew Ferrier Sep 18 '12 at 13:12
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.