Can I add a set of words to the Vim autocomplete vocabulary?

In Vim, I'm aware of using CTRL-n and CTRL-p to autocomplete words found in the document. This is great for promoting the use of descriptive method and variable names.

I would like to add a set of words to autocomplete that I often but are not in the source file I'm currently editing. My current solution is to just add the list of words to a comment at the bottom of my template file, but that seems a bit wasteful and kludgey at best.

Is there a way to add words to Vim's autocomplete vocabulary that would be accessible to every Vim session?


You can use abbreviations in your ~/.vimrc file for just a couple of words:

:abbr supe superuser
:abbr autoc autocomplete
:abbr que question

These will auto-complete after pressing Space or Enter. So if you typed que then pressed Space or Enter it would finish the word "question" for you.

If you are adding a lot and want this interface:

alt text

You can use dictionaries. Simply set up a file with a word on each line, then in your .vimrc add a line like this:

set dictionary+=/home/john/dict.txt

Replace the path with your dictionary file's location. You can then use Ctrl + x and Ctrl + k to bring up the suggestions. Ctrl + n and Ctrl + p to select the next/previous out of multiple selections.


The "sources" to the regular autocomplete (the one you get from Ctrl+N) are taken from the complete option (see :h 'complete') The default is

complete=.,w,b,u,t

which means

  1. . scan the current buffer
  2. w scan buffers from other windows
  3. b scan other loaded buffers that are in the buffer list
  4. u scan the unloaded buffers that are in the buffer list
  5. t tag completion

you can add your own dictionary with

set complete+=k~/.vim/keywords.txt

and add the keywords one per line in ~/.vim/keywords.txt. This way you can access the completions directly with Ctrl+N (there's no need to explicity invoke dictionary completion with Ctrl+X, Ctrl+K). I found this to be specially useful for code completions where I have all the common used function names in keywords.txt