CLI Writing Showdown
When it comes to distraction-free writing, I find nothing better than a decent command line interface application. Nothing to pop up, beep, flash or otherwise take you out of your state of mind. I’ve also found that they tend to be rock solid and much faster than their gui counterparts.
For some time, I’ve been using WordGrinder after being inspired by George R.R. Martin‘s use of Wordstar. Open-source and available on most Linux distros, WordGrinder lets you do what the name suggests. The interface is minimal yet gives you nearly gui-like menus in the flavor of Word Perfect 5.1. It’s awesome for writing, if writing is all you need to do…
About a month ago, I decided to plunge into the world of Vim. I had seen some coding tutorials on Youtube where real-time editing was happening in ways that shouldn’t be possible. Variables within a function were disappearing and being inserted in fractions of a second. Terms were being found/replaced with no indication that a key was pressed. Magic. Witchcraft. I had to know how.
Many lessons and headaches later, I know how… Vim is built to keep your fingers on the home row. ALWAYS. It does this by assigning tasks to they keys your fingers are already on depending on what ‘Mode’ you’re in. Changing from mode to mode is done with single keypresses and with practice, it becomes incredibly natural. So much so that editing in any other application (for instance, this WordPress admin page) feels really awkward and just plain wrong. And I’ve only been using Vim for a month! I feel both ruined and enabled in wonderful ways.
For some silly reason, though, I was hung up on the idea of using Vim solely for coding and opting for WordGrinder for writing. Then I saw this post from none other than the Nanowrimo site! A whole new world opened up to me. I didn’t find all of the recommended plugins useful, but one of the greatest things about Vim is that you can change it to be whatever you want it to be. And if you use if for more than one thing and need it to be different things depending on what you’re working on, it does that too!
Some recommendations if you decide to try Vim:
- Find one of the many Youtube tutorials that suits you and follow along.
- Do the vimtutor (run ‘vimtutor’ from the command line) slowly and carefully, taking breaks when your head hurts.
- Try Vim-Adventures.com to get the movement muscle memory
- When you get to the point of customization, make your own .vimrc file. Look at others on github but only for examples.
- If you find yourself using the arrow keys for movement (a big no-no) remap them to do nothing. Add this to your .vimrc:
noremap <Up> <Nop>
noremap <Down> <Nop>
noremap <Left> <Nop>
noremap <Right> <Nop>
<Nop> stands for ‘No operation’ and essentially makes the key do nothing. Alternatively, you can use <Esc> in place of <Nop>
- Another remap I found very useful is for the Escape key. Escape returns you to Normal mode so it’s pressed quite frequently and reaching for it is a bore. I remapped the keypress kj to <Esc> and life improved.
- Never stop learning. Head to Learn Vimscript the Hard Way and learn how to make Vim do whatever you want it to. The possibilities are endless!
- Familiar word processor functions
- Gets out of the way and lets you write
- Text formatting options
- Super fast and stable
- Small learning curve
- (now that I’ve used Vim) Editing later on can be a chore, but not worse than other word processors
- Makes things happen almost as fast as your brain can think of things to make happen
- Can be made into whatever you want it to be
- ‘Text Folding’ allows you to tuck away paragraphs or chapters with a single keypress. This allows you to have an overview, almost outline style of your entire project, yet still have access to every bit of it instantly. (Hard to explain but you’ll see!)
- Steep learning curve
- Speed of light editing
- Text formatting doesn’t really exist by default but can be added with plugins, e.g. vim-markdown
- Text formatting is only displayed when the file is exported and converted, say with markdown to html
- Huge community to support you through whatever troubles you may encounter