【问题标题】:Syntax Highlighting Pager [closed]语法高亮寻呼机[关闭]
【发布时间】:2011-07-16 00:57:24
【问题描述】:

现在,我使用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

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

是否有支持语法高亮显示的寻呼机或一些参数和程序的疯狂组合,我可以将其串在一起来完成这项工作?最终,我想突出显示 Mercurial 的差异和日志,所以也许那里有一个捷径......

【问题讨论】:

    标签: command-line syntax-highlighting pager


    【解决方案1】:

    寻找bat: A cat(1) clone with wings

    bat 支持大量编程和标记语言的语法高亮显示。

    它不是寻呼机,但如果需要,它会自动将输出重定向到less

    【讨论】:

    • 请不要只发布一些工具或库作为答案。至少在答案本身中展示how it solves the problem
    • @Zoethetransgirl bat FILENAME
    【解决方案2】:

    我可以建议vimpager吗?

    首先,最近的 vim 发行版(我相信 6.0 及更高版本)带有 pager-esque-mode 脚本。它非常简单且实用,并且与less 的操作类似。试试:vim '+help less' +only

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

    此时,您可以简单地set $PAGER=vimpager,甚至alias less=vimpager。效果很好。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

          • 很好 - jed 支持管道进入缓冲区(vim 和常规 emacs 不支持)。如何在 jed 中打开语法高亮?如果我jed ${FILE},突出显示有效,但当我cat ${FILE} | jed时则不行
          • 我认为这不可能。这实际上是一个非常困难的问题,因为想出在许多语言中语法上有效的短程序相当简单。与大多数编辑器一样,模式检测仅基于文件扩展名。最简单的方法可能是将标准输出通过管道传输到具有适当扩展名的文件。
          • 程序启动后打开语法高亮的命令顺序是什么?我不熟悉 emacs 衍生产品。
          • 实际上不确定。自从我真正使用它以来已经有一段时间了。执行info jed 会产生相当广泛的文档。
          猜你喜欢
          • 2010-09-12
          • 1970-01-01
          • 2014-05-17
          • 2021-03-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多