给定一个包含源树的目录,是否有一种简单的方法可以从命令行使用格式精美的等效文件替换每个源文件?
请记住,通常项目的源树还包含非源文件,并且源本身可能使用不同的语言。
我正在寻找一种支持尽可能多语言的工具,因为项目通常包含多种语言的源代码。特别是,我会寻找支持xml / html,javascript,ruby和java的东西。
给定一个包含源树的目录,是否有一种简单的方法可以从命令行使用格式精美的等效文件替换每个源文件?
请记住,通常项目的源树还包含非源文件,并且源本身可能使用不同的语言。
我正在寻找一种支持尽可能多语言的工具,因为项目通常包含多种语言的源代码。特别是,我会寻找支持xml / html,javascript,ruby和java的东西。
Answers:
您可以从终端在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"
安装indent
软件包,然后在文件上运行程序。
不是免费的,不是命令行的,可能太复杂了,但是IntelliJ Idea是可以执行此操作的IDE。我没有用Java或ruby对其进行测试,但是它在django项目(python + javascript + HTML)下工作得很好。
它还具有用于配置要重新格式化的内容的大量选项。
如果这是一次性期刊,则可以免费下载试用版。
这是HTML格式选项的屏幕截图。它是从PyCharm(Python受限版本,这里没有ruby或Java支持)中获取的,因为它是我使用的,但是IntelliJ应该是相同的,但是支持更多的语言。
重新格式化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
以便您可以直接覆盖输入文件