Jetez un coup d'oeil sur :h complete-functions
et :h 'completefunc'
pour plus de détails.
Ou plonger dans le code ci-dessous:
" Scan current buffer for everithing in { }.
fun! GetRegexes()
let rx = '{.\+}'
let res = []
for line in getline(1, '$')
if line =~ rx
call add(res, matchstr(line, rx))
endif
endfor
return res
endfun
fun! MyComplete(findstart, base)
if a:findstart
" locate the start of the completion
let line = getline('.')
let start = col('.') - 1
while start > 0 && line[start] !~ '{'
let start -= 1
endwhile
return start
else
let res = []
for m in GetRegexes()
if m =~ '^' . a:base
call add(res, m)
endif
endfor
return res
endif
endfun
set completefunc=MyComplete
finish
[0-9] {printf("yada yada \n");}
[0-9] {printf("yada \n");}
Si vous enregistrez ce fichier comme compl.vim
et la source avec commande :so %
alors vous serez en mesure de commencer à taper {pri
et appuyez sur Ctrl - X , Ctrl - U pour appeler le menu d'achèvement avec 2 éléments:
{printf("yada yada \n");}
{printf("yada \n");}
Je crois que vous pouvez l'adapter à vos besoins.
Vous pouvez enregistrer 2 fonctions dans votre fichier .vimrc et définir le paramètre completefunc sur MyComlete
pour le tampon où vous avez besoin de ce type d'achèvement.
merci, mais je ne voulais pas cela, je sais stocker dans les registres ("aymotion) ferait, mais je cherchais un achèvement automatique divine: P –
Je ne suis pas entièrement certain que" Autocomplete "décrit vraiment ce que vous Je fais ici – rossipedia