2

我在 vimrc 中使用以下命令在保存时自动提交。我觉得这非常有用。但是我不喜欢我每次都被相同的提交消息困住。

autocmd BufWritePost * execute ':silent ! if git rev-parse --git-dir > /dev/null 2>&1 ; then git add % ; git commit -m "Auto-commit: saved %"; fi > /dev/null 2>&1'

我希望在保存时收到提示,允许我提供提交消息或按 Enter 并在我赶时间时使用“自动提交:已保存 %”作为默认值。

input()在这个特定的命令中玩过并且没有任何运气。

我还尝试使用函数返回的值,但也无法让它工作。

4

1 回答 1

3

input()是一个内置函数,您将其结果分配给一个变量,然后可以将其内容(通过适当的转义)插入到您的外部 shell 命令中:

autocmd BufWritePost * let message = input('Message? ', 'Auto-commit: saved ' . expand('%')) | execute ':silent ! if git rev-parse --git-dir > /dev/null 2>&1 ; then git add % ; git commit -m ' . shellescape(message, 1) . '; fi > /dev/null 2>&1'

这个将查询每次保存。通过添加条件,您可以在未给出任何消息时使其中止提交。

于 2013-11-03T07:16:49.913 回答