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