In the last couple of weeks, I have been spending more time writing for this blog and at the same time I’ve been getting more and more into productivity and efficiency. More specifically, a keyboard-only setup. This includes not using the touchpad.

There are many aspects to productivity because there are so many different things you do on your PC, but I’m trying to break this down and focus on very specific use cases. The first use-case will be writing for this blog.

The current setup

This blog used to be created on Blogger, which is a browser application. The same browser is also used for researching, which means there is always a big list of tabs open. Navigating these different tabs is very inefficient. Browser usage, in general, is a topic for another time, because it is too big to handle in one post.

The biggest problem I have with working in a browser is that you need your mouse for so many different actions. Creating a link, making titles, making a list, navigating through the text,… There are for sure better solutions for this.

Improving the setup

Being a developer, I wanted to treat a blog post more like code. Unfortunately, being a developer I also started way too quickly with over-engineering a solution by thinking about completely switching from writing a blog to writing a fully-fledged website from scratch. Luckily I quickly realized that while it would solve some of my problems, it would also create a thousand new ones. Instead, I decided to go on a slightly easier road.

Markdown

In a previous blog post about ⛑️ Kotlin Support in VSCode, I mentioned that I like VSCode, so why not use it for writing these blog posts as well? To make it even better, there’s an often-used Markup language out there called Markdown. VSCode even comes with a built-in preview that renders Markdown. The only thing left to do when I’m finished writing a post is to copy the preview to Blogger. What’s cool is that Blogger by default recognizes titles and subtitles from a copied markdown preview.

Vim

Another huge advantage is Vim, which is a text editor that focuses on efficient keyboard-only use. Vim bindings can be easily added to VSCode through the vscodevim extension.

When using Vim for navigating through text, it helps a lot to have an explicit line break after x amount of characters to avoid very long lines. This is again available out of the box in Vim. More information can be found in this StackOverflow post, but to give a summary here:

Set a maximum text width (in your .vimrc) using

:set textwidth=100

Afterwards, you can use the built-in formatting command gq in combination with a movement command or a visual selection. To format the whole document, use gggqG (move to the start of the page, and format until the end of the page).

Next steps

With this basic setup in place, it’s already more pleasant and efficient to write, but this is just the start. By looking at blog posts similar to code, you can start thinking about templates or automating parts of writing and publishing posts. Besides that, it also makes sense to invest more time into learning vim-shortcuts, as they are extremely powerful. Be careful to not end up in a rabbit hole though, you can go extremely far into optimizing each keystroke using Vim. There are other aspects to look into as well, such as window management or browser navigation.

The conclusion is clear that there is a lot to optimize and improve about how you work, but that doesn’t even touch upon what you want to work on.