在 vim 中预提交结果

问题描述 投票:0回答:1

在 Vim 8.1 中,我可以运行

:!pre-commit run --files %
对当前文件进行 lint 和自动格式化。有什么方法可以将其(或任何调用
pre-commit
的方式)转换为编辑器内突出显示,就像 https://github.com/dense-analysis/ale 那样?

过去,我在vim中运行

ale
,并使用pip安装的
mypy
black
yamllint
以及brew或apt安装的
shellcheck
,延迟shell
pre-commit
运行到编辑后。这样做的缺点是除了延迟反馈之外,这只会将一部分钩子带入我的编辑器(例如缺少
end-of-file-fixer
),而且我还没有将所有两次安装的钩子配置为
language: system
,为编辑器内和编辑器外运行在版本和参数上出现分歧留下了可能性。我当然可以将钩子切换到
language: system
,但我希望有一种方法可以使用
.pre-commit-config.yaml
作为版本和参数的单一事实来源,同时在编辑器中显示结果。

vim pre-commit.com
1个回答
0
投票

排除突出显示部分,这个裸方法有效:

autocmd BufWritePost * silent! execute '! if [ -e $(git rev-parse --show-toplevel)/.pre-commit-config.yaml >/dev/null 2>&1 ]; then pre-commit run --files %; fi' | redraw!
© www.soinside.com 2019 - 2024. All rights reserved.