If the user has a complicated command the only solution right now is to bind it. The problem with this, is that if the command is rarely used, the user will need to open their config all the time. At this point it would probably be easier to handle it somewhere else as a snippet.
On the other hand if the user could define their :rarelyusedcommand
as a memorably string that can be autocompleted, the situation is much better.
Ideally, any extra you'd type would be passed to it, e.g.:
define gitsendinreplyto = term git send-email --cc='{{.Cc | persons | join "' --cc='"}}' --annotate --cover-letter --in-reply-to={{.MessageId}}
And you should be able to call:
:gitsendinreplyto -v3 -2
To send a v3 of the last two commits.