Mouse Usage Considered Harmful

Taking your hands off the keyboard is a physical context switch that loses you a little bit of precious time when you're focused and in the zone. I used to watch people develop on the command line using tools like emacs and Vim and wonder why they were using such complicated tools, but like any powerful tool, while they have a high learning curve, mastery of them makes you far more efficient.

To use the mouse less in your workflow, consider using these tools:

i3 is a window manager that makes tiling and navigating between windows easy. You can set up the configuration to automatically open all the apps you need on startup and bind them to the correct windows and workspaces so your computer is ready to use as soon as it boots. Switching between workspaces is a cinch. Need to use a browser? alt+3. vscode? alt+4. Move a workspace to another monitor? alt+p. Windows can be tiled horizontally or vertically, and can easily switch between these orientations. Here's a sample of some additional i3 configuration for having your computer boot with your applications spawned on the correct monitors.

Vim is a command line text editor that is entirely keyboard driven. For a quick tutorial check out openvim.com and consider purchaing the book Practical Vim for more in depth study. Vim allows you to edit, copy, paste, and search text without your hands ever leaving the keyboard. Vim has "normal mode" and an "insert mode" to allow the keyboard to be used to navigate as well as enter text. In "normal mode," text is navigated using h,j,k, and l instead of the arrow keys with additional useful navigation keys like w, b, and e, which go to the beginning of the next word, beginning of the previous word, and end of the next word respectively. Overall the paradigm is "action, motion," where the action key is pressed and then a "motion" is specified, like "dw" for "delete next word." Vim is very deep and powerful, and there's always a new trick to learn that will make you more efficient.

VSCode has a Vim plugin that enables Vim editing and hotkeys, so you don't have to leave IDEs entirely behind to use Vim. The README which can be found on github lists some additional hotkeys that are exclusive to VSCodeVim, such as gd for jumping to the definition of a class or variable or gh, which operates like mousing over the name under the cursor.

TMUX is sort of like i3 for the terminal. It stands for Terminal Multiplexer, and allows you to tile multiple sessions into the same terminal, horizontally or vertically. This is useful for, say, tailing a log file while running something else in the same window.

Vimium uses Vim keybinds for Chrome or Firefox, enabling you to browse, enter text, and click on items on the page without your hands ever leaving the keyboard. Navigation uses j,k,h,l (and J,K,H,L) for scrolling, and navigating back and forward, and navigating previous and next tabs. Clicking uses the f key, and works in an ingenious fashion: each clickable item on the page is tagged with letters once the f key is pressed, and to click on an item, you simply press the keys its tagged with on the screen.

Take the time to learn these tools and they will pay you back tenfold in short order!