语法突出显示寻呼机

时间:2011-03-15 18:35:20

标签: command-line syntax-highlighting pager

现在,我使用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的{​​{1}}页面,但我找不到任何“嘿,将这些控制字符显示为颜色而不是打印它们”选项。 mostless具有相同的垃圾行为,但most显示的颜色非常精细,明显受到more的限制。

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

4 个答案:

答案 0 :(得分:9)

我可以建议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

答案 1 :(得分:7)

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

您还可以创建环境变量LESS=-R以使其成为默认行为。同样适用于其他选择;见man less

答案 2 :(得分:2)

您可以尝试使用jed。是的,它是一个文本编辑器,而不是一个寻呼机,但它非常轻量级,默认安装包含适用于各种文件类型和语言的优秀颜色方案。

答案 3 :(得分:1)

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