I use Vim to write blog posts, notes and documentation before using another text editor. I don’t consider myself a true writer, but I like to use the speed and shortcuts I know from writing code while I’m writing prose as well.
Vim is primarily a programmers’ editor, so to make it better for general writing, here are a number of tricks and plugins I find useful.
Built in spell checker
Vim has a built-in spell checker you can activate with
:set spell or
:setlocal spell to activate it for the current buffer.
I keep forgetting how to switch it on and off, so I added these shortcuts to my Vim configuration to easily switch spelling on and off again.
With these mappings, I can enable spelling for English or Dutch, and turn it back off. Handy if you write in multiple languages.
" -- Spelling, cause I keep forgotting how to do that nnoremap <Leader>se <Esc>:setlocal spelllang=en<CR><Esc>:setlocal spell<CR> nnoremap <Leader>sn <Esc>:setlocal spelllang=nl<CR><Esc>:setlocal spell<CR> nnoremap <Leader>ns <Esc>:setlocal nospell<CR>
Find out more in the help file with
If you’re using GVim on Windows, the default look is just plain ugly. To get a wide range of good-looking color schemes, you only need to install the base-16 vim themes I talked about here. These also look good in a terminal window.
Proselint and ALE
Proselint scans your text for linguistic problems. It isn’t a grammar checker. It’s an aggregation of best writing practices integrated in a command line tool. Used together with the ALE plugin, you can scan your text files automatically with Proselint and get markers in Vim when things are not quite right.
Proselint is a Python tool, so you need to install Python first, then install the Proselint package using the Pip package manager.
pip install proselint
ALE will pick up Proselint automatically and indicate any problems by adding an indicator in the margin.
A bigger font for writing
Vim-fontzoom is a simple plugin to increase your font size. Good for your eyes on small screens, and works excellent in combination with the focus writing plugins listed below.
If you are often writing in Markdown format like myself, the Previm preview plugin comes in handy. It renders your Markdown document to HTML and opens it in a browser window. It’s great if you split the browser and (g)Vim window side by side, because it automatically updates the HTML file when you save.
Get rid of the code editor look Vim sports by default and enter distraction-free writing environment with Goyo and Limelight.
:Goyo to remove all distractions, use
:Limelight to highlight the current lines you are working on.
If you have folders with notes and other documents in your working folder and subfolders, finding them fast without having to exit Vim is handy.
CtrlP is a great plugin to do just that. Hit the Ctrl-P shortcut and start typing a word that’s part of a file or subfolder somewhere in your current path, to find the file.
Plain text files are just too plain. With txt.vim you’ll get some “syntax” highlighting for even the most boring of files. Numbers, dates, smileys and bracketed text look better with this little plugin.
Markdown files already have syntax highlighting in Vim, so you don’t need an extra plugin for that.
If you made it this far, you’re a pretty hardcore Vim user already. So why not take it up another notch? CoC or Conquer of Completion is a plugin that masters code completion for all sorts of programming languages.
It’s also useful for any type of text document. Any word in your document is ready to be reused for automatic completion in Vim. Type half a word, or a few letters, and it presents you a list of already typed words from the current buffer. Handy if you frequently use long and complex names, like for writing documentation or science-fiction.
I use this together with Supertab, which makes it easy to complete words by pressing tab. Just like I’m used to in other editors for programming.
More Vim writing resources
In a VimConf 2021 session Theena Kumaragurunathan (an actual writer) demonstrates his writing an world building workflow using Vim.
He also has the GitHub repository OVIWrite up with a Vim configuration setup for writers. I’m not sure if you can just copy and paste this setup, but it’s an interesting starting point to see what plugins he’s using.
I noticed quite a few plugins that I highlighted here, so I guess I’m on the right track. :)