Vim has a built-in spell checker and it’s smart and easy to use. We can enable the spell checker with set spell and we can set the language with set spell spelllang=[lang]. It is possible to set the language on local buffer with setlocal spell spelllang=[lang].

If it’s enabled, it has 3 states for a word:

  • Everything is good.
  • I know what you mean, but that’s not how you spell it. (for example colour vs colour).
  • I don’t know what it is, but I can suggest you words similar to that.

View and accept suggestions

When the cursor is on a word z= will open a list of words ranked by likelihood, usually the first 5 contains the desired word.

Show next error

With ]s we can move the cursor to the next misspelled word, while [s moves it backwards.

Add a new word to the dictionary

If we have a word that’s correct, but vim still yelling at us, we can add the word into our dictionary with zg. On a clean vim, usually I just type in a lot of acronyms and jargon, and add them all.

Mark a word as incorrect

If we know a word was misspelled, but vim things it’s still valid, we can mark a word incorrect with zw.

Extra / Bonus

With :abbreviate and :read, it’s a dream editor to write documentation. In vim abbreviations will be replaced with it’s full form. It’s good to shorted often used phrases, or even to autocorrect some spelling mistakes.


ab teh the
ab tehn then

Replace abbreviations used online:

ab av I have
ab ofc of course
ab bcos because
ab WW Weaveworks

Be polite:

ab rtfm read the fine manual

Poor man’s snippet toolkit:

ab Req Request
ab forin for key, value in range list {<CR>}
ab logerr if err != nil {<CR>logrus.Error(err)<CR>}