【问题标题】:open source syntax highlighter tool? [closed]开源语法高亮工具? [关闭]
【发布时间】:2008-09-19 08:10:14
【问题描述】:

我正在寻找一个开源、跨平台(至少是 Windows 和 Linux)命令行工具来获取一些代码(C++,但多语言会很不错),并吐出该代码的有效 XHTML 表示,包括语法高亮。

理想情况下,XHTML 应该只用 <span> 和 <div> 标记用不同的类包装代码,这样我就可以提供 CSS 代码并更改颜色,但这是一个可选的附加功能。

有人知道这样的应用吗?

【问题讨论】:

    标签: open-source syntax-highlighting


    【解决方案1】:

    我可以推荐Pygments。它易于使用并支持多种语言。它做你想做的事,即将代码包装在<span>标签中:

    from pygments import highlight
    from pygments.lexers import PythonLexer
    from pygments.formatters import HtmlFormatter
    
    code = 'print "Hello World"'
    print highlight(code, PythonLexer(), HtmlFormatter())
    

    给予

    <div class="highlight">
    <pre><span class="k">print</span> <span class="s">&quot;Hello World&quot;</span></pre>
    </div>
    

    然后您可以使用提供的样式表之一来制作您自己的样式表。

    您也可以通过它的pygmentize 脚本调用它。该脚本可以以不同的方式格式化输出:HTML、LaTeX、ANSI 颜色终端输出。

    【讨论】:

    • 我最终使用了 pygments - 它简直太棒了!非常感谢您的建议。
    【解决方案2】:

    Vim 可以将它突出显示的任何代码保存为“彩色”HTML(它可以在多个平台上运行)。还有GNU hightlight。还有很多其他的。

    【讨论】:

    • 你能举个例子在vim中怎么做吗?
    • 在 gvim 中打开你的文件,然后 :syn on :TOhtml vim 屏幕分割,一个用于 html 的缓冲区,一个用于原始文件。然后你保存 html 渲染的文件,你就完成了。
    【解决方案3】:

    有一个很好的,由XML驱动,速度快,开源:http://sourceforge.net/projects/colorer/

    【讨论】:

    • 被 XML 驱动只是 Java 世界的一个特性... :-)
    【解决方案4】:

    我不记得GeSHi 是否有命令行程序,但即使没有,也应该不难搞定。它在获取代码和生成漂亮的彩色 HTML/XHTML 方面做得很好,甚至带有行号(或每个 X 行号,甚至)和其他有用的功能。

    【讨论】:

      【解决方案5】:

      Enscript 看起来像您要的:

      1. 从 ascii 文件中输出 HTML(或 PS,或 RTF)
      2. 它包括多种编程语言的“漂亮打印”(语言敏感代码突出显示)功能。

      【讨论】:

        【解决方案6】:

        不确定这会有多大帮助,但我的团队使用 doxygen 生成文档,它恰好在我们的代码视图上提供颜色语法突出显示以及附带的好处。从来没有真正需要它,但它确实做到了。

        【讨论】:

          【解决方案7】:

          如果你对使用 ruby​​ 没问题,你想要coderay。

          【讨论】:

            【解决方案8】:

            我将添加my own one to the list,它为 C# 着色,但可以适用于 C、C++ 和 Java。 它默认生成内联样式和一个 pre 标记。

            源代码在 C# 中,您需要获取 mono/monodevelop 并将其编译为控制台应用程序,因此在这方面它不会被收缩包装。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-07-16
              • 2014-05-17
              • 1970-01-01
              • 2010-11-23
              • 2017-07-24
              • 2017-10-03
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多