多语言命令行源代码格式化工具

15

有没有一款命令行Unix工具可以格式化/缩进/美化不同语言的源代码?我特别感兴趣的语言是Java、JavaScript、PHP和XML,但最好能处理其他语言。

(我不是在寻找生成语法高亮标记的工具,我已经知道一些可以做到这一点的工具。)


1
我在askubuntu上发布了一个类似的问题:如何重新格式化/缩进给定目录中的所有源文件? - fdierre
我自己还没有尝试过,但我认为这很有前途:https://github.com/google/google-java-format - Sridhar Sarnobat
可以在此处找到各种其他选项来实现这一点:https://alternativeto.net/software/artistic-style/。 - Brad Parks
在这个与众多美化器集成并列出了大量美化器的Atom美化器的文档中,有一个非常多才多艺的工具,看起来像是prettydiff - Brad Parks
1
我的最后一条评论是 - 我用 Neovim 打包了一个方法来完成这个操作,并在 SuperUser 上发布了答案... 但如果你想使用 vim,你可能可以使用以下命令来完成此操作:vim -s <(echo "gg=G\nZZ") YOUR_FILE_HERE - Brad Parks
7个回答

5

可以在Mac上使用Homebrew安装,运行brew install astyle - Brad Parks
可以在这里找到各种其他选项来实现这一点:https://alternativeto.net/software/artistic-style/ - Brad Parks

4

我一直认为Vim的代码格式化程序是一个非常好的选项。它可以识别许多语言并且可以进行合理的定制。

您可以像这样将相关命令传递到vim中:

vim MyClass.java <<< gg=G:wq

解释:

  • gg=G 格式化文件
  • :wq 保存文件并返回命令提示符

不幸的是,当一个方法前有多个Java注解时(例如 @Override@Deprecated),它不能很好地工作。 - Sridhar Sarnobat

3

如果您已经将自动格式化选项设置为Eclipse中的项目特定设置,则可以执行以下操作:

/opt/local/eclipse/eclipse -nosplash
-application org.eclipse.jdt.core.JavaCodeFormatter
-verbose
-config .settings/org.eclipse.jdt.core.prefs
src/ tests/ doc/examples/

这意味着,您实际上可以安装和配置Eclipse,以便仅使用其自动格式化功能,而不管您通常使用哪个编辑器。 :)

来源:http://blogs.operationaldynamics.com/andrew/software/java-gnome/eclipse-code-format-from-command-line

附加说明

在Mac OS X上:

/Applications/eclipse/java-oxygen/Eclipse.app/Contents/MacOS/eclipse  -nosplash -application org.eclipse.jdt.core.JavaCodeFormatter -verbose -config ~/my-eclipse-workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs MyClass.java

1
很好的提示。我希望你不介意我添加Mac的等效内容。 - Sridhar Sarnobat

1

0

因此,我向您介绍Style Revisor,一款带有GUI和命令行界面的源代码格式化程序。它将支持不同的语言,包括JavaScript和PHP。如果您对命令行使用感兴趣-您可以定义自己的格式化样式作为插件。当然,您也可以使用许多预定义的样式。例如:

./Style\ Revisor --lang=PHP --style=GNU --path=~/to-your-project-root-dir

目前,Style Revisor 支持两种编程语言:C 和 Objective-C。欢迎访问:http://style-revisor.com/

此致敬礼。


确实,我已经寻找这个很长时间了。当它准备好使用时,我将通过我的自动格式化插件https://github.com/Chiel92/vim-autoformat添加vim支持。太遗憾它不是开源的。 - chtenb
Vim 的自动格式化插件?很酷。 - Denis Shevchenko

0

对于 XML 和 HTML,我使用 htb

如果您是 Eclipse 用户,则 JTidy 是另一个选择。

对于 Java,有 Jalopy


0

Vim通常具有自动语法高亮,并且在大多数基于Unix的系统上安装时可用。对于Vim中的格式和缩进,我使用:set autoindent:set tabstop=4在启动时自动设置。 autoindent保留您在开始新行时所在的当前缩进,而tabstop设置按Tab键时代码缩进的程度(仅用于缩进,对于一般的Tab使用shiftwidth)。要在每次启动Vim时配置这些选项,请将它们放入~/.vimrc文件中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接