I've been mentored 6 years ago to a new way of working: using more my keyboard and less my mouse when I was coding.
Switching between different tasks is never a good idea: you brain spend time and energy trying to adapt for each change. Similarly, switching between your keyboard and your mouse costs cognitive energy. Your brain needs to move your hand and adapt to the mouse, then to the keyboard, then to the mouse again.
What about keeping your mental energy for what you're creating? Here are 5 tools you need for a complete Mouseless Development Environment.
Why choosing Arch Linux for your new mouseless world? Despite its reputation, this Linux distribution is the most stable OS I've ever used. I tried many of them, from MS-DOS to Windows 7, macOS, and Ubuntu.
Additionally, it has a rolling distribution system: it means that all your applications will be always up to date. No need to wait for the next big release or your OS, you'll be on the top of your game all the time.
Installing Arch is a great way to dive into Linux-based systems. The whole Internet run on Linux nowadays, so it's always a good idea to know some Linux basics to be a well-rounded developer.
Do you really need to precisely move and resize with your mouse every single window open? Not really.
The tiling window manager i3 allows you to move and resize your windows easily only using your keyboard.
How does it work? Each time you open an application, its window will take the whole screen. If you open a new one, it will take half of the screen. Open a third one and it will take one third of the screen.
That's not all: you can change the layout of your windows (stacking them or using tabs for example) using simple shortcuts.
It considerably simplify the management of your applications open for you to focus on the important tasks at end.
The best development environment shouldn't get in your way: it has to be fast for the more demanding processes (like docker or even your browser) to run correctly.
The shell is a very mature tool which can save you a lot of time:
- You can automate every boring tasks, something you can't do with a GUI (Graphical User Interface).
- You have access to many tools which are great to manipulate plain text, like your code, your documentation, or your blog posts for example.
Having a good and robust shell is important to unleash the power of automation. You could use Bash of course, but Zsh is even more complete. Its auto-completion for example is robust and very useful. If you're a developer, you know how important auto-completion is.
Did you try to learn all the shortcuts of your favorite IDE? I did, and it take me longer than learning Neovim. The problem is to remember all these shortcuts. They don't really make a lot of sense most of the time.
That's where Neovim (and Vim in general) do well: to delete a word, you can use the keystroke
word) for example. It makes sense, so it's easier to remember.
When I use Neovim, I've the impress I speak with my editor via my keyboard.
Contrary to urban legends, Neovim is easy to learn but hard to master. That's why many claim that the learning curve is steep, but for your daily editing purposes it's quite simple. That's not all: it lets you a lot of room to customize everything and increase your productivity.
This is another great point about all the tools I speak about in this article: you can personalize them depending of your own needs.
The cherry on the cake: tmux is a terminal multiplexer which makes your shell even more powerful. You can even automate even further your whole system with tmuxp. For example, you can configure in a very simple yaml file what shell you want to open with what command-line tool in it.
For example, when I work on my blog, I just enter the command
blog and automatically I have 3 shells opening in different tabs: one with Neovim to write my article, one shell to push everything on Github, and another one to have access to the images I publish with my articles.
Because I think going mouseless is a great way to improve your efficiency, I wrote a book explaining in great details how to build this kind of Mouseless Development Environment. I wanted to pass everything I learned throughout these years of intensive use.
I thought I would have sold 10 of these books, but at the end 300 happy customers bought it the first month. None asked for a refund and I only had positive returns! I still don't believe it myself to be honest, but I'm so proud I've helped so many developer.
I've recorded a short video to show you how you can use this kind of system. If it's still too long for you, you can jump from chapter to chapter.
Did you try this type of system before? Do you have your own Mouseless Development Environment? I would love to read about your setup and the tools you use.