Вы можете включить определения функций в сокращения, но они не могут принимать аргументы.Это пример из vimdocs:
func Eatchar(pat)
let c = nr2char(getchar(0))
return (c =~ a:pat) ? '' : c
endfunc
iabbr <silent> if if ()<Left><C-R>=Eatchar('\s')<CR>
Полагаю, вы могли бы проанализировать выражение аббревиатуры в функции, но я не уверен, что вы можете также включить такие символы, как скобки, в аббревиатуру.Может быть, что-то здесь даст вам представление.
Edit: Вы всегда можете сделать что-то вроде этого:
:iab for() for(int i = 0; i < ; i++)<C-o>T<
Что не имеет аргументаавтозаполнение, конечно, но позволяет сразу же начать его набирать.