您可以使用 Vim 的自动命令:
:autocmd BufWritePost * execute '!git add % && git commit -m %'
Run Code Online (Sandbox Code Playgroud)
这是未经测试的,但它应该添加文件并使用文件名作为提交消息来提交它。
您需要 BufWritePost,因为这是在写入文件后触发的。我想象有很多令人厌烦或不安全的边缘情况。
我使用放置在我的 .vimrc 中的 vim 自动命令。该命令首先粗略地检查我们是否在 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'
Run Code Online (Sandbox Code Playgroud)
您当然可以通过宏或命令重新映射来实现这一点。
(检查/sf/ask/8200531/)
但我不确定这是一个好的选择。我暂时不精通git,我知道它有时与svn不同。但我不会用 svn 来做这个自动提交。提交需要有意义,而不是定期保存。
您通常会提交,因为您添加了一个功能,修复了一个错误,......而不仅仅是因为您处理了一个文件。您不会最终得到无法编译的项目或未完成的功能。