【问题标题】:one pretty printer "to rule them all"一台漂亮的打印机“统治他们”
【发布时间】:2010-09-20 01:54:40
【问题描述】:

我正在寻找一种可以以尽可能多的语言漂亮地打印(AKA 整洁或美化)源代码的工具。我特别热衷的包括:

  • Java
  • JSP
  • HTML
  • JavaScript
  • SQL
  • JSON
  • XML

理想情况下,该工具应该能够就地更新源文件,并且一次能够格式化多个文件。如果它可以格式化包含多种语言的文件(例如,包含 HTML、Java 和 JavaScript 源代码的 JSP),那就太好了,但这可能要求有点高。

我已经找到了一个commercial tool,它似乎涵盖了很多语言,但免费的会更好:)

顺便说一句,我知道有一台漂亮的打印机可用于大多数语言,但我正在寻找的是“一站式商店”。

干杯, 唐

【问题讨论】:

  • 免费?!,Polystyle 每种支持的语言只需 1.998 美元! ;)
  • 对我的血液来说太丰富了:)
  • 我在一个包含 JSP 代码的文件上试了一下,它似乎工作正常。

标签: language-agnostic pretty-print


【解决方案1】:

我一直使用 Vim 来做这件事。它不能很好地处理 HTML,但它可以处理其他的。使用 Vim 命令可以很容易地在多个文件上自动运行它。

【讨论】:

  • 我也用 gvim,虽然我不是忍者。究竟如何格式化源代码,以及如何设置用于缩进的制表符/空格数?
  • 缩进间距设置为: :set ts=4 sw=4 (将制表位设置为 4 并将 shiftwidth 设置为 4)。包含在 .vimrc 文件或环境变量中。
  • 自动格式化是通过在命令模式下按 = 键完成的。使用 ggVG 突出显示整个缓冲区,然后点击 =(您可能需要执行两次)。您也可以对缓冲区的较小选择执行此操作,但有时它假定您的选择应从缩进级别 0 开始。
【解决方案2】:

我使用UltraEdit,发现它总体上还不错。它不是免费的,但也不是那么贵。

【讨论】:

    【解决方案3】:

    Wikipedia 有一个很大的列表。不过,我很想看看这里可能会出现什么共识。

    几种处理多种语言;例如

    PrettyPrinter,(每种编程语言的开源美化器)

    UniversalIndentGUI(任何漂亮打印机的图形用户界面,带有格式设置的实时预览)

    prettyprinter.de,(PHP、Java、C++、C、Perl、JavaScript、CSS 的在线美化工具)

    【讨论】:

    • 我正在寻找的是一台可以打印多种语言的漂亮打印机,而不是一种语言。
    • 有几个可以处理多种语言。
    【解决方案4】:

    Emacs 是我个人的最爱。有一些插件可以支持几乎所有你可以使用的语言。

    【讨论】:

      【解决方案5】:

      对于 Haskell,我在 ~/bin/pp.hs 中有这个:

      #!/usr/bin/env runhaskell
      module Main (main) where
      import Language.Haskell.Parser
      import Language.Haskell.Pretty
      import System.Environment
      pp f = case parseModule f
              of ParseOk m -> prettyPrint m
                 a -> show a
      main = do args <- getArgs
                mapM_ (>>= putStrLn . pp) $
                  if null args then [getContents] else map readFile args
      

      在 Vim 中,:set equalprg=~/bin/pp.hs,选择一个区域,点击=,然后砰,它会被美化。

      好的,这不是很笼统。但我认为如果我在这里添加它,它对某人有帮助的机会很小。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多