语法高亮寻呼机

问题描述:

现在,我使用most作为我的寻呼机。虽然它对man页面有帮助的语法突出显示,但对于其他任何内容(我特别寻找diff/C++),它缺少彩色语法突出显示。语法高亮寻呼机

同时,pygments是一个很棒的节目。我可以很容易地使彩色输出它:

# ./pygmentize -f console256 ${file} 
hg diff | ./pygmentize -f console256 -l diff 

现在,我希望能够页的输出,所以我只是用:

# ./pygmentize -f console256 ${file} | most 
hg diff | ./pygmentize -f console256 -l diff | most 

在这一点上,大多数转储全部彩色化控制字符到我的屏幕像这样:

^[[38;5;28;01mclass^[[39;00m ^[[38;5;21;01mheap_allocator^[[39;00m 
{ 
^[[38;5;28;01mpublic^[[39;00m^[[38;5;241m:^[[39m 

这当然是不可读的。我查看man页面most,但我找不到任何“嘿,将这些控制字符显示为颜色而不是打印它们”的选项。 lessmost具有相同的垃圾行为,但more显示的颜色完美无瑕,具有more的明显限制。

是否有支持语法突出显示或某些疯狂的参数和程序组合的寻呼机我可以串起来使这项工作?最终,我想从Mercurial获得差异和日志以突出显示,所以也许有一个快捷方式在那里...

less -R显示ANSI颜色序列原样(而不是扩展为插入符号)。这将使语法突出显示工作!

您也可以创建环境变量LESS=-R以使其成为默认行为。对于其他选项也是如此见man less

您可能会尝试使用jed。是的,它是一个文本编辑器,不是传呼机,但它非常轻便,默认安装包含各种文件类型和语言的优秀colorschemes。

+1

尼斯 - JED支持管道到缓冲区(vim和emacs的定期不)。如何打开jed中的语法高亮显示?如果我'$ $ {FILE}',突出显示的作品,但不是当我cat $ {文件} | jed' – 2011-03-15 18:49:53

+0

我不认为这是可能的。这实际上是一个非常困难的问题,因为它提出了很多语言在语法上有效的短程序非常简单。与大多数编辑人员一样,模式检测仅基于文件扩展名。最简单的方法可能是将stdout用适当的扩展名输入到文件中。 – 2011-03-15 18:55:55

+0

一旦程序已经启动,打开语法高亮的命令序列是什么?我不熟悉emacs衍生产品。 – 2011-03-15 19:01:33

Jed具有不同语言的语法高亮模式,与emacs类似。例如,如果您将一个C程序传送给它,您可以通过按'ESC',然后'x'打开突出显示,然后键入'c-mode'。如果它是一个php程序 - 将最后一部分更改为'php-mode'等等......

我可能会建议vimpager

首先,近期vim分布(我相信6.0及以上)有寻呼机式的模式脚本。它非常简单和功能强大,其操作与less类似。试试:vim '+help less' +only

然而,更好的是,Rafael Kitover已经写了一个更强大和更强大的脚本vimpager。它可用on GitHub(或vimscripts)。如果你使用OS X并使用Homebrew,那么就像brew install vimpager一样简单。

在这一点上,你可以简单地set $PAGER=vimpager,甚至alias less=vimpager。它工作出色。

enter image description here