我在vim中使用以下命令批量自动格式化特定文件类型:
:args ~/someDirectory/**/*.filetype | argdo execute "normal gg=G" | update
我试图找出如何将此命令作为预提交挂钩运行,以确保我关注的文件类型的所有文件在提交之前都是自动格式化的。
我将如何做到这一点?
提前致谢。
答案 0 :(得分:2)
一个解决方案as in this answer,即vim
:
files=`find /path/to/repo -name "*.filetype" -type f`
for file in $files
do
vim -e -s -n "+normal gg=GZZ" $file
done
但是,您可以定义一个pre-commit
脚本,而不是使用clean
挂钩,该脚本将执行脚本(如上所述调用vim)。
使用content filter driver(在您的情况下为*.filetype
)通过 .gitattributes
declaration 调用脚本。
(来自"Customizing Git - Git Attributes"的图片来自“Pro Git book”))
在本地git配置中声明该内容文件管理器驱动程序后,它将自动在git commit
上应用该脚本。
请参阅“Best practice - Git + Build automation - Keeping configs separate”中的完整示例。