Taking a Peek at Seven Command Line Tools for Writers

19 August, 2019

This post was originally published at Opensource.com and appears here via a CC BY-SA 4.0 license.

For most people (especially non-techies), the act of writing means tapping out words using LibreOffice Writer or another GUI word processing application. But there are many other options available to help anyone communicate their message in writing, especially for the growing number of writers embracing plain text.

There’s also room in a GUI writer’s world for command line tools that can help them write, check their writing, and more — regardless of whether they’re banging out an article, blog post, or story; writing a README; or prepping technical documentation.

Here’s a look at some command-line tools that any writer will find useful.

Editors

Yes, you can do actual writing at the command line. I know writers who do their work using editors like Nano, Vim, Emacs, and Jove in a terminal window. And those editors aren’t the only games in town. Text editors are great because they (at a basic level, anyway) are easy to use and distraction free. They’re perfect for tapping out a first draft of anything or even completing a long and complicated writing project.

If you want a more word processor-like experience at the command line, take a look at WordGrinder. WordGrinder is a bare-bones word processor, but it has more than enough features for writing and publishing your work. It supports basic formatting and styles, and you can export your writing to formats like Markdown, ODT, LaTeX, and HTML.

Spelling Checkers

Every writer does (or at least should do) a spelling check on their work at least once. Why? An immutable law of the writing universe states that, no matter how many times you look over your manuscript, a spelling mistake or typo will creep in.

My favorite command-line spelling checker is GNU Aspell, which I previously looked at in detail. Aspell checks plaintext documents interactively and not only highlights errors but often puts the best correction at the top of its list of suggestions. Aspell also ignores many markup languages while doing its thing.

A much older but still useful alternative is Ispell. It’s a bit slower than Aspell, but both utilities work the same way. As you interact with your text file, Ispell suggests corrections. Ispell also has good support for foreign languages.

Prose Linters

Software developers use linters to check their code for errors or bugs. There are also linters for prose that check for style and syntax errors; think of them as the Elements of Style for the command line. While any writer can (and probably should) use one, a prose linter is especially useful for team documentation projects that require a consistent voice and style.

Proselint is a comprehensive tool for checking what you’re writing. It looks for jargon, hyperbole, incorrect date and time format, misused terms, and much more. It’s also easy to run and ignores markup in a plain text file.

Alex is a simple yet powerful prose linter. Run it against a plaintext document or one formatted with Markdown or HTML. Alex pumps out warnings of “gender favouring, polarising, race related, religion inconsiderate, or other unequal phrasing in text.” If you want to give Alex a test drive, there’s an online demo.

Other Tools

Sometimes you just can’t find the right synonym for a word. But you don’t need to grab a dead tree thesaurus or go to a dedicated website to perfect your word choice. Just run Aiksaurus against the word you want to replace, and it does the work for you. This utility’s main drawback, though, is that it supports English only.

Even writers with few (if any) technical skills are embracing Markdown to quickly and easily format their work. Sometimes, though, you need to convert files formatted with Markdown to something else. That’s where Pandoc comes in. You can use it to convert your documents to HTML, Word, LibreOffice Writer, LaTeX, EPUB, and other formats. You can even use Pandoc to produce books and research papers.

Scott Nesbitt

target="_blank"