如何重新格式化/重新给定目录中的所有源文件?


14

给定一个包含源树的目录,是否有一种简单的方法可以从命令行使用格式精美的等效文件替换每个源文件?

请记住,通常项目的源树还包含非源文件,并且源本身可能使用不同的语言。

我正在寻找一种支持尽可能多语言的工具,因为项目通常包含多种语言的源代码。特别是,我会寻找支持xml / html,javascript,ruby和java的东西。


1
语言是...?
用户未知

2
在计算器类似的Q&A:stackoverflow.com/questions/1731357/...
lumbric

Answers:


7

您可以从终端在ex和command模式下使用vim。

要缩进单个文件:

vim -c "normal gg=G" -e <file-to-indent> <<'EOF'
:wq
EOF

要递归缩进文件,请创建以下脚本:

与vim.sh缩进

vim -c "normal gg=G" -e $1 <<'EOF'
:wq
EOF

现在,键入:

$ chmod u+x indent-with-vim.sh
$ find . | xargs -I {} ./indent-with-vim.sh {}

Vim将尽最大努力使文件缩进。您可以改善某些特定的文件类型。

对于XML:

  • 安装xmllint 添加到您的.vimrc

    au FileType xml setlocal equalprg=xmllint\ --format\ --recover\ -\ 2>/dev/null
    

要改善PHP格式:

下载http://www.vim.org/scripts/download_script.php?src_id=15001 (它将下载名为php.vim的文件)

在您的主目录上创建以下目录:

~/.vim/indent

并复制php.vim~/.vim/indent

如果您对任何文件类型的结果都不满意,则可以在网络上寻找替代方法(例如HTML的htb,https://github.com/vim-ruby/vim-ruby来改进Ruby,等等)。 )。

无论哪种方式,您都可以使用.vimrc技术或foo.vim缩进文件来改善缩进。

另外,您可以更改find​​参数以仅应用于某些特定类型,例如:

find . -iname "*.html" -or -iname "*.xml"


0

不是免费的,不是命令行的,可能太复杂了,但是IntelliJ Idea是可以执行此操作的IDE。我没有用Java或ruby对其进行测试,但是它在django项目(python + javascript + HTML)下工作得很好。

它还具有用于配置要重新格式化的内容的大量选项。

如果这是一次性期刊,则可以免费下载试用版。

这是HTML格式选项的屏幕截图。它是从PyCharm(Python受限版本,这里没有ruby或Java支持)中获取的,因为它是我使用的,但是IntelliJ应该是相同的,但是支持更多的语言。

在此处输入图片说明


0

Google Java格式

重新格式化Java源代码以符合Google Java样式:

https://github.com/google/google-java-format

wget https://github.com/google/google-java-format/releases/download/google-java-format-1.5/google-java-format-1.5-all-deps.jar
java -jar google-java-format-1.5-all-deps.jar /path/to/MyClass.java

提示:

  • 要在多文件上执行此操作,请将该--replace选项与xargs
  • 使用,sponge以便您可以直接覆盖输入文件
  • 有一个Eclipse和IntelliJ插件可以执行相同的重新格式化
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.