Autocomplete with words in buffer and dictionaries Credits: Maxime Boisvert https://gist.github.com/maxboisvert/a63e96a67d0a83d71e9f49af73e71d93
set completeopt=menuone,noinsert,noselect
set complete=.,b,k,w
inoremap <expr> <CR> pumvisible() ? "\<esc>o" : "\<CR>"
autocmd InsertCharPre * call AutoComplete()
fun! AutoComplete()
if v:char =~ '\K'
\ && getline('.')[col('.') - 4] !~ '\K'
\ && getline('.')[col('.') - 3] =~ '\K'
\ && getline('.')[col('.') - 2] =~ '\K' " last char
\ && getline('.')[col('.') - 1] !~ '\K'
call feedkeys("\<C-N>", 'n')
end
endfun
" register of dictionaries
let g:dotfiles_dir = "~/path/to/dotfiles"
fun! AddDict(arquivo)
let s:dict_dir = g:dotfiles_dir. "/vim/dicionarios"
execute "setl dictionary+=".s:dict_dir."/".a:arquivo.".dict"
endfun
augroup dicionarios
au BufEnter * call AddDict(&ft)
augroup END