我是 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 插件。您也可以autocmd
按donothingsuccessfully
建议设置,但让它弹出:Gcommit
或:Gstatus
(您可以从中挑选更改以添加到 git 索引)
答案4
您当然可以使用宏或命令重映射来实现这一点。
(查看https://stackoverflow.com/questions/117150/can-i-re-map-commands-in-vim)
不过我不确定这是否是个好选择。我现在还不精通 git,我知道它有时与 svn 不同。但我不会用 svn 进行这种自动提交。提交需要有意义,而不是定期保存。
您通常会提交,因为您添加了一个功能、修复了一个错误……而不仅仅是因为您处理了一个文件。您不会最终得到未编译的项目或未完成的功能。