Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

vimrc auto-commit w/message prompt

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.

like image 944
Andrew Avatar asked Dec 01 '25 05:12

Andrew


1 Answers

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.

like image 173
Ingo Karkat Avatar answered Dec 03 '25 21:12

Ingo Karkat



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!