Just for reference, vim does have built in completion. <C-p> and <C-n> in insert mode will complete a word. Also in insert mode <C-x><C-{n,p,l,f}> are contextual completions (see :h ins-completion for full list, I suggest not using the dictionary because it takes awhile). I have found that contextual completion has changed how I program in vim and it seems to be one of the lesser known features. It is way more powerful if you're using buffers/panes/tabs, which all three have greatly improved my programming as well (in different ways).