Aşağıdaki sadece hızlı bir mock-up cevabıdır (yani, bir şey kırılmadan veya bir şeyi kırana kadar işlevseldir), ancak "mümkün" olduğunu gösterir:
augroup completion
autocmd!
autocmd CompleteDone * call PostCompletion()
augroup END
function! PostCompletion()
if !empty(v:completed_item)
"check if text after current cursor position is part of the match
let crt_word = expand('<cWORD>')
let compl_word = v:completed_item['word']
let lcw = len(compl_word)
let leftover = strpart(crt_word, lcw)
let lfl = len(leftover)
if lfl > 0
let endcompl = strpart(compl_word, lcw - lfl)
if leftover ==# endcompl
let cpos = getcurpos()
normal dW
call setpos('.', cpos)
endif
endif
endif
endfunction
Yukarıdaki kodun yapmaya çalıştığı şey: tamamlandıktan sonra , imlecin altındaki WORD'ün tamamlanmış kelimeden daha uzun olup olmadığını doğrular ve eğer öyleyse, 'kalanının' tamamlamanın son kısmı ile eşleşip eşleşmediğini kontrol eder (örneğin, "Fonksiyon"). Varsa, WORD'nin geri kalanı silinir (bu, imleç konumu hakkında bazı şeyler varsayar).
(Tüm bunları başarmanın daha akıllıca yolları olduğundan eminim ve onları görmek istiyorum!)