Возможно, я неправильно понял вопрос, но я протестировал указанную вами функцию и, кажется, она работает:
Я добавил функцию Eatchar
к .vimrc
:
func Eatchar(pat)
let c = nr2char(getchar(0))
return (c =~ a:pat) ? '' : c
endfunc
А внутри vim
Я создал вашу аббревиатуру, например:
:cab \x\ M:\xmlexport\Output\ <left><C-R>=Eatchar('\s')<CR>
Затем я пишу :\x\
в командной строке, и она расширяется до :M:\xmlexport\Output\
, и позиция курсорасразу после последнего обратного слеша, чтобы написать желаемый ввод.