借我一双写轮眼──Less 语法高亮

less 是 Linux 平台下最常用全屏文件查看程序……(此处省略一万字)……可谓”人类的好朋友“ ^_^!!

但是 less 显示的内容总是灰头土脸的,很让人不爽

我无意中发现一个秘密,可以让 less 摇身一变,摩登又靓丽

首先安装 source-highlight (这个工具主要用途是将文件转换为语法高亮的 html 页面,有兴趣的话可以试一下)

在 shell 的配置文件中添加以下语句 (如果是 bash 的话就是 .bashrc)

less语法高亮。需要安装 source-highlight

PAGER='less -X -M' export LESSOPEN="| /usr/bin/src-hilite-lesspipe.sh %s" export LESS=' -R '

看看效果 source .bashrc less xxx

/usr/share/source-highlight/default.lang 文件可以设置默认语言类型,添加 include "sh.lang" 然后 less .bashrc

Read More:

16 Comments

  1. 1 orange Commented @ 2009-01-08 11:17Reply to this comment

    vim的less.sh也可以辦到的

  2. 2 Kardinal Commented @ 2009-01-08 11:46Reply to this comment

    那个和直接用 vim 有什么区别么? 操作方式和 less 不一样的吧 ^_^

    而且 less 可以组合到管道中 , 比如 less xxx | cat ,输出效果酷毙了 不知道用 less.sh 是什么结果? 不会用 -__-||

  3. 3 Kardinal Commented @ 2009-01-08 12:09Reply to this comment

    让 cat 也语法高亮(zsh) hlcat() { less $* | cat } alias cat='hlcat'

  4. 4 dybnu Commented @ 2009-01-08 12:54Reply to this comment

    测试无效……

  5. 5 hmy Commented @ 2009-01-08 13:04Reply to this comment

    或者用一个叫"most"的软件来替代less

  6. 6 walkerxk Commented @ 2009-01-08 13:47Reply to this comment

    less替代more,most替代less -_-! 另外,less有tail -f的效果,如果一个文件不断增长,可以一直按G来跳到最后,这个是vi不支持的,还有读取大文件的时候vi要等整个文件读完才能操作,还是less好用。

  7. 7 web81 Commented @ 2009-01-08 14:18Reply to this comment

    貌似8.04里面这个文件位置不一样 /usr/share/source-highlight/src-hilite-lesspipe.sh

  8. 8 kwyd Commented @ 2009-01-08 14:53Reply to this comment

    改进了一下 Kardinal 的方法, Kardinal的方法的缺陷在于把默认的 lesspipe 浏览一些binary文件 (如.gz,等)的功能给抹掉了。

    在ubuntu中 (我用的是 8.04/8.10),默认在 ~/.bashrc 是调用了 lesspipe来设置 LESSOPEN 为 "| /usr/bin/lesspipe %s" 的, 如果直接使用 Kardinal 的方法, 虽然能语法高亮文本文件了,但是却无法用less看压缩包内容。 用less看压缩包等二进制文件的具体信息可以 man lesspipe.

    解决方法为,使用 lesspipe的 filter 功能, 以把下述内容保存为 ~/.lessfilter , 并且 chmod +x ~/.lessfilter,同时把Kardinal文中加入到 .bashrc的所有内容都删除,确认你的 .bashrc中调用了 lesspipe (ubuntu 默认启动),然后重开一下terminal, 就可以发现配置文件/源代码可以高亮显示,并且还能正确打开.tar.gz等文件了。

    !/bin/bash

    case $1 in ChangeLog|changelog) /usr/bin/source-highlight --failsafe -f esc --lang-def=changelog.lang --style-file=esc.style -i $1 ;; Makefile|makefile) /usr/bin/source-highlight --failsafe -f esc --lang-def=makefile.lang --style-file=esc.style -i $1 ;; profile|bashrc) /usr/bin/source-highlight --failsafe -f esc --lang-def=sh.lang --style-file=esc.style -i $1 ;; *) /usr/bin/source-highlight --infer-lang -f esc --style-file=esc.style -i $1 2>/dev/null || exit 1 ;; esac

    exit 0

    ps, 上面这个 .lessfilter文件是基于 /usr/share/source-highlight/src-hilite-lesspipe.sh 做了少许改动而成。

  9. 9 Kardinal Commented @ 2009-01-08 14:56Reply to this comment

    @dybnu:不同系统下路径可能不一样 @hmy: most 早就用过,虽然是彩色的,但不能说是”语法高亮“吧 ^^ @walkerxk:是滴 @web81:本来里面有一句”不同系统下路径可能不一样“,但是我编辑了一次,出了点错,帖子的下半身让 wp 给吃了……惨不忍睹…… @ kwyd: less 还能查看压缩包呢? ^^|| 俺试试

  10. 10 kwyd Commented @ 2009-01-08 14:56Reply to this comment

    晕,修正一下上面说的, 其他 Kardinal 加到 .bashrc的都可以删,但是这条 export LESS="-R" 还是要继续放在 .bashrc 中的,否则会出问题。

  11. 11 dybnu Commented @ 2009-01-08 16:40Reply to this comment

    @Kardinal: 我修改了这个才有效的,呵呵 /usr/share/source-highlight/default.lang

  12. 12 more Commented @ 2009-01-08 17:03Reply to this comment

    想高亮在less中直接按v就近到vim了

  13. 13 RRG Commented @ 2009-01-08 17:51Reply to this comment

    用了/usr/share/source-highlight/src-hilite-lesspipe.sh还是不行? 还是用vim/view当less使好了

  14. 14 dybnu Commented @ 2009-01-08 19:28Reply to this comment

    @more: 这主意好,哈

  15. 15 somebody(莫多) Commented @ 2009-01-08 23:37Reply to this comment

    我也把PAGER换成most了.这样man的时候也高亮了.

  16. 16 windwiny Commented @ 2009-01-09 13:45Reply to this comment

    不是可以用这个? export LESSTERMCAPmb=$'33[01;31m' export LESSTERMCAPmd=$'33[01;31m' export LESSTERMCAPme=$'33[0m' export LESSTERMCAPse=$'33[0m' export LESSTERMCAPso=$'33[01;44m' export LESSTERMCAPue=$'33[0m' export LESSTERMCAPus=$'33[01;32m'