In favor of a keyboard-first navigation
Tags: productivity
Published: 2020-10-06 01:25:03

The year is 2014 and I was very excited to start my freshman year on the Technical School I got approved. I chose to do an IT course, since I wanted to make a game. However, things got different when I met my Programming Logic I teacher: Gilmar, a nostalgic man, who was in his mid 50s, and wanted to teach us how to program in the old fashioned way: Using C++, Borland's IDE (which we had to run on a _Windows XP_ Virtual Machine) and save as much resources as possible.

![Borland C++ Interface](https://dev-to-uploads.s3.amazonaws.com/i/kor5ssqdra18xqpbof4n.png)<figcaption> Borland C++ (I really like that ncurses look though)</figcaption>

Nowadays, I rarely use C++, since I'm a front-end engineer, and never used XP again. But the old man also taught me not to be a "_Windows_ Pilot". What does it mean? Well, according to him: 

>_True programmers **don't** use a mouse._

While I don't think that's true, not using a mouse can be good for your productivity.

# **Why?**
You must be asking yourself: "What difference does it make? This looks really dumb!", well, at first glance, it is. For those of you are dragging your cursor towards the X button right now, stick around because I'm about to change your mind.

## Navigate Faster
One of the main advantages is that navigating on files, folders and applications can be **way** faster. You can close, undo, re-do, go up, down, select and a lot more in the blink of an eye. For instance, if you used the `CTRL+F4` Hotkey, you could've closed this tab and wouldn't be reading so far (But I wouldn't tell you that before, of course).

## Avoiding health issues
Repetitive Strain Injury is a common problem in today's world, specially for IT professionals. Clicking many times with your index or middle finger is bad for your tendons, and can lead to injuries that cause a lot of pain, affecting your productivity, hobbies and daily activities. When typing on a keyboard, you'll use most of your fingers, thus varying your movements.

# **How?**
Adapting to a keyboard-first workflow isn't an easy task. Anyhow, there are some tools that can help you to achieve this goal.

## Hotkeys
First things first: learn how to use hotkeys. Everybody knows how to close an application on windows by using `ALT+F4`, or change the focus through `ALT+Tab`. Windows, Chrome, IDEs and Social Media Platforms have a lot of keyboard shortcuts for navigation and editing. Twitter, for instance, has hotkeys to everything: From Writing a new Tweet with `n`, to navigating to someone's profile with `g + u`.

![Twitter Keyboard shortcuts: 
n to Write a new tweet;
l to Like a Tweet;
r to Reply;
t to Retweet;
m to Direct message an account;
u to Mute an account;
b to Block an account;
enter to Open tweet details;
o to  Expand photo;
/ to Search;
Cmd + enter or ctrl + enter to Send a tweet;
g + h to go to Home timeline;
g + o to go to Moments;
g + n to go to Notifications tab;
g + r to go to Mentions;
g + p to go to Profile;
g + l to go to Likes tab;
g + i to go to Lists tab;
g + m to go to Direct messages;
g + s to go to Settings and privacy;
g + u to go to Go to someone’s profile.](https://dev-to-uploads.s3.amazonaws.com/i/w606hggg1gxjh0zp5z5j.jpg)
<figcaption>Twitter Keyboard shortcuts</figcaption>

## (Neo)Vim
Vim is a text editor created in 1991 that gives you superpowers. It has a lot of shortcuts, which can be combined to edit your files a hundred times faster. However, it has a very steep learning curve. Some tools try to make it easier to learn, like [games](https://vim-adventures.com/) and `vimtutor`, which is built into Vim itself (none of those makes it a piece of cake, though).

You can also add plugins to Vim. This helps you to customize its appearance (Like I [did](https://github.com/AlberoneRamos/VimSCode))and add features such as autocomplete, fuzzy finder, file tree searching and much more. Nowadays, a lot of people use [Neovim](https://github.com/neovim/neovim), which is a refactor of that tool, aimed at maximizing **extensibility**. There's also [VeoNim](https://github.com/veonim/veonim), which tries to bring VSCode extension support. Any of those are definitely worth a shot.

![Customized Vim Setup](https://dev-to-uploads.s3.amazonaws.com/i/r423njp9dkgib1iyqk7l.png)
<figcaption>Vim with plugins and a nice terminal color scheme. Taken from <a href="https://www.reddit.com/r/unixporn/comments/hne3v7/bspwm_polybar_vim_tmux_the_batman/">r/unixporn</a>.</figcaption>

## Tiling Window Manager
A Window Manager is a software that controls the placement and appearance of windows in a Graphical User Interface. For example: Windows and OSX native WMs lets you draw a window above other, with some 3D and 2D effects, this is called a **compositing window manager**. While each type of Manager has its pros and cons, I'm here to talk in favor of the *Tiling* ones.

For those who use Linux and like [ricing](https://jie-fang.github.io/blog/basics-of-ricing), a Tiling Window Manager is not something new. This tool organizes the screen into non-overlapping frames, which are evenly divided. It's odd in the beginning, but, once you get used to it, its keyboard-only navigation will give a big boost for your speed. Personally, I like BSPWM, but there are a lot of options out there: i3, awesomewm and herbstluftwm for **Linux**, AquaSnap and SplitView for **Windows** and Chunkwm and Amethyst on **OSX**.
![My BSPWM setup](https://dev-to-uploads.s3.amazonaws.com/i/d8pctf8uow0jiethe816.png)
<figcaption>My BSPWM setup with SXHKD</figcaption>

# **Conclusion**
I gotta admit, quitting my career as a "Windows Pilot" is no easy task! Sometimes, I use my mouse because it's faster than pressing `Tab` a hundred times to highlight an option and there are no shortcuts, or I'm using Illustrator and there's no keyboard-only navigation. Yet, being careful and curious enough to always search for a hotkey instead of dragging the cursor around really gave me a speed boost. You should definitely give it a try!

**The cover image was made by Philipp Kühn, check it out on [Dribbble](https://dribbble.com/shots/8512900-Key-pattern)**