Awesome vim plugins for writers

466 readers like this.
Typewriter keys

April Killingsworth. Modified by Rikki Endsley. CC BY-SA 2.0.

Vim is one of the most popular text editors among programmers, web developers, and power users of GNU/Linux. This is not surprising, because Vim offers high-speed editing, has extensibility, and is pre-installed on most Linux-based distributions.

In addition, Vim offers great benefits to writers, regardless of whether they are technically minded or not. I personally use it not only for editing configuration files and web pages, but for writing blogs, software documentation, notes, and presentation slides. In my opinion, the only potential issue it has might be its relatively steep learning curve. I remember that it took me about two weeks to become comfortable working in it, but since then, editing any kind of text has felt noticeably more fluent compared to other editors I used before.

In this article, I will share a collection of plugins that help me create my documents more efficiently and with fewer grammatical, stylistic, and typographical mistakes.

Note: I use Neovim with a Qt-based GUI, however all of the plugins should all work with any stable versions of Vim as well.

Grammar and word usage

Even though the best way to make sure a text contains no grammatical mistakes is for a human to review it, a grammar checker is still valuable when no one has the time to proofread your work. The plugins vim-languagetool and vim-grammarous provide integration with LanguageTool, which checks for errors not covered by Vim's spell checker. It currently supports 31 languages.

LanguageTool plugin

LanguageTool plugin

If you're interested in a more lightweight solution (for English only), vim-wordy is a good choice. This plugin doesn't depend on anything other than Vim, and it looks for mistakes in the current file based on weak wording, jargon, weasel phrases, and so on.

Thesaurus

A thesaurus can give you access to a wider range of vocabulary by listing synonyms of a particular word or phrase. The Multi-Language Thesaurus Query/Replacement Plugin checks for the available synonyms for the word currently under the cursor (or multiple words highlighted in visual mode) and enables you to replace them with any suggestion easily. The currently supported languages are English, Chinese, Russian, and German.

Some backends work with specific online services (for example, Thesaurus.com). Others require a local database, such as the one that you can download from Gutenberg.org or the English thesaurus for OpenOffice.

Thesaurus plugin

Thesaurus plugin

Typography rules

On a typical keyboard, only straight quotation marks can be found (the characters ' and "), and many decide this based on their own style guide. However, if you'd like to follow typography rules, use curly quotation marks and apostrophes. Similarly, use en dashes and em dashes instead of single hyphens (-), and three dots instead of an ellipsis.

Since I'm the type of person who generally pays attention to these rules, I have both UniCycle and vim-textobj-quote installed. When active, UniCycle turns all straight quotation marks into curly ones, three dots into ellipsis, and two or three hyphens into en dashes and em dashes, respectively. In addition to doing the same with quotation marks, vim-textobj-quote also provides navigation between opening and closing quotation marks, surrounding words with quotes, and so on.

Note: Digraphs and Compose keys are decent solutions, too, if you want to insert a character that is outside the scope of the above two plugins.

Distraction-free writing

As claimed by Cal Newport in his book "Deep Work," the more distractions we encounter during our work, the less productive we become. Coming from my own experience, I can confirm this to be true. Fortunately, you can easily reduce (and restore) the editor's potentially distracting visual elements whenever you'd like.

Having read the article on the blog titled, "The Darnedest Thing," I've come across Goyo and LimeLight. Goyo disables or hides everything except the file content and the status bar, and centers the text using borderless splits (or, using Vim terminology, "windows"). The status bar is also stripped of everything but the most important parts, such as showing whether you are in insert or visual mode, messages of successful saving, etc. On the other hand, LimeLight dims all the paragraphs (specifically, the non-empty lines preceded and followed by empty lines) besides the active one, so that you can focus on the passage you're currently editing.

LimeLight plugin

LimeLight plugin

Focusing on craftsmanship

I believe writing can be thought of as craftsmanship, because it takes time and careful concentration to convey your message effectively to the widest range of your audience as possible. For this, choosing the right tools is essential. I've chosen Vim and the plugins I've mentioned because I can focus on my work and deliver it faster.

Do you use any plugins for Vim that help you with your writing? I'd love to hear your suggestions.

Tags
User profile image.
Zsolt Szakács is a free and open source software enthusiast, a stress expert, a translator, a web developer, and a writer. You can find out more about him in his portfolio.

12 Comments

Thank you! Just what I should have looked for yesterday is today in my RSS feed. I rally appreciate aticles like these.

Just like you I use Vim for everything, except presentations. I write code, blog posts, notes and short stories in vim. I'm so used to it so when trying to use other editors I keep going :w to save instead of CTRL-S. I have tried to use plugins or configurations to a more writer-mode vim but nothing really stuck and I go back to pretty much standard setup. The only thing I change is to get a Solarized look and I write most things in Markdown, so it's easy to read right there but also easily converted to LaTeX, PDF or even Word format. I changed my work notes done in One Note to all markdown files and shrunk over 800 MB to less than 800 kB, including pictures.

There's some nice plugins here... definitely a few I've never messed with before. I've tried a few writing-focused plugins, but my base set are vim-markdown, vim-airline, and pencil. I rely on pandoc for converting my typographic characters (quotes, dashes, etc) when I convert to an output file for other people to read.

I've been using Pandoc for several weeks (which I plan to write about in a separate article), but I haven't noticed that quotation marks are converted to curly ones. So, thank you for pointing that out!

In reply to by Jason van Gumster

Thanks for this great article!

I have tried vim-grammarous on latex document in the past. It seems to have a hard time dealing with all the Latex symbols, giving quite a few false alarms... Do you also use LaTeX often? How did you resolve the issue?

I've used LaTeX a lot in the past (and recently discovered Pandoc, which allows me to convert Markdown to .tex and .pdf files), but I've come across false alarms many times as well, especially over LaTeX commands (even with vim-Languagetool).

Although I haven't been able to find a true solution, I decided to leave grammar and spell checking for the very last steps of writing. (The spell checker of Vim, IMO, is even more problematic for languages such as Hungarian because it uses Aspell instead of Hunspell.)

In reply to by ron89 (not verified)

Zsolt, as a long-time vi and latterly vim user (my first experiences with vi date back to 1984, and it's been my go-to since), I really REALLY appreciate this cool list that you have put together. Thank you!!!

Something slightly off the topic, but for people who like vi(m) but want a full-blown IDE for their programming work, there is a plugin for Netbeans called jVi that makes the code screens respond to those vi muscle-level memories...

Anyone knows if there is some more 'modern' version of UniCycle plugin suitable to be installed with some of the modern Vim's package managers like vim-plug?

I have UniCycle installed with the help of vimplug. Have you tried putting "Plug 'unicycle'" in .vimrc, or is there another issue with the plugin?

In reply to by Gour (not verified)

Creative Commons LicenseThis work is licensed under a Creative Commons Attribution-Share Alike 4.0 International License.