답변:
다음은 빠른 모형 답변 일뿐입니다 (즉, 작동하지 않을 때까지 또는 무언가 깨질 때까지 작동합니다).
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
무엇 위의 코드 시도 할 것은 : 후 완료, 커서 아래의 단어가 완성 된 단어 이상를 검증하는 경우, 그리고, 만약 그렇다면, 그것은 더 검사의 '나머지는'당신의 예에서 (완성의 마지막 부분 일치하는 경우, "함수"). 그럴 경우 나머지 WORD가 삭제됩니다 (커서 위치에 대한 일부 사항이 가정 됨).
(이 모든 것을 달성 할 수있는 더 영리한 방법이 있다고 확신합니다. 그들을보고 싶습니다!)