Você não deu um exemplo de uma função e uma abreviação que não funciona, então é impossível dizer o que você fez de errado. Aqui está um exemplo de uma função no meu ~ / .vimrc,
function! Hello()
return "hello"
endfunction
e uma abreviação em ~ / .vim / after / ftplugin / php.vim,
abbr xyz <C-R>=Hello()<CR>
esse trabalho como esperado. Abra um novo arquivo php,
$ vim foo.php
tipo
This is a test of xyx
e ao acertar a barra de espaço, isso se torna
This is a test of hello