I use the following command in my vimrc to auto commit on save. I find this very useful. However I do not like that I am stuck with the same commit message every time.
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'
What I would like is to receive a prompt when saving that allows me to either provide a commit message or press enter and use the "Auto-commit: saved %" as a default when I am in a hurry.
I played around with input() and didnt have any luck within this particular command.
I also attempted to use a value returned by a function but could not get that to work either.
input() is a built-in function, you assign its result to a variable, and can then insert (with proper escaping) its contents into your external shell command:
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'
This one will query on every save. With an added conditional, you could make it abort the commit when no message is given.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With