有没有办法将 Vim 中的保存与 git 中的提交挂钩?

有没有办法将 Vim 中的保存与 git 中的提交挂钩?

我是 Vim 新手,我想让每次保存文件时,文件都会提交到版本控制中。这可能吗?

答案1

我使用 vim 自动命令,该命令放在我的 .vimrc 中。该命令首先粗略地检查我们是否在 git 目录中工作(通过检查 .git 目录是否存在,无论是在当前目录中还是使用git rev-parse),然后使用git -a -m %以便仅暂存和提交先前添加的文件。

autocmd BufWritePost * execute '! if [ -d .git ] || git rev-parse --git-dir > /dev/null 2>&1 ; then git add % ; git commit -m %; fi'

答案2

您可以使用 Vim 的自动命令:

:autocmd BufWritePost * execute '!git add % && git commit -m %'

这尚未测试,但它应该添加文件并以文件名作为提交消息提交。
您需要 BufWritePost,因为这会在文件写入后触发。不过我想会有很多令人厌烦或不安全的边缘情况。

答案3

你可能想看看逃犯插件,这是 vim 的一个非常强大的 git 插件。您也可以autocmddonothingsuccessfully建议设置,但让它弹出:Gcommit:Gstatus(您可以从中挑选更改以添加到 git 索引)

答案4

您当然可以使用宏或命令重映射来实现这一点。

(查看https://stackoverflow.com/questions/117150/can-i-re-map-commands-in-vim

不过我不确定这是否是个好选择。我现在还不精通 git,我知道它有时与 svn 不同。但我不会用 svn 进行这种自动提交。提交需要有意义,而不是定期保存。

您通常会提交,因为您添加了一个功能、修复了一个错误……而不仅仅是因为您处理了一个文件。您不会最终得到未编译的项目或未完成的功能。

相关内容