Como alternativa, eis uma maneira de definir e expandir abreviações que se expandem em qualquer lugar:
let s:anywhere_abbreviations = {
\ 'fo': 'FOOBAR',
\ 'ab': 'ABBREVIATION',
\ }
function! s:MaybeExpandAbbreviation(trigger)
for key in keys(s:anywhere_abbreviations)
if matchstr(getline('.'), repeat('.', strchars(key)) . '\%' . col('.') . 'c') ==# key
return repeat("\<BS>", strchars(key)) . s:anywhere_abbreviations[key] . a:trigger
endif
endfor
return "\<C-]>" . a:trigger
endfunction
inoremap <expr> <Space> <SID>MaybeExpandAbbreviation("\<Space>")
Basta adicionar as abreviações que devem se expandir em qualquer lugar do s:anywhere_abbreviations
dicionário. A s:MaybeExpandAbbreviation()
função procura e expande as correspondências de abreviações quando a tecla trigger é pressionada - <Space>
é mapeada para disparar a expansão das "abreviações em qualquer lugar".
Com o s:anywhere_abbreviations
dicionário acima , a digitação whatfo<Space>
será expandida para whatFOOBAR
.