I have realised over the years that as a developer, your development environment on your computer plays a crucial role in terms of your productivity. As a developer you want to get your thoughts into code with the least amount of friction possible. You want the whole process to be seamless.
However, as a developer you are constantly evolving and therefore so is your developer environment. There are certain key aspects of your environment such as your terminal and your text editor that you are going to be constantly configuring. This could be due to a change in project, or a change in available tooling or just a change in the way you want to approach something. You also want to be able to be consistent across machines as even hardware evolves. As a developer you are likely to be switching machines every 2 or 3 years.
There are certain key aspects of your environment such as your terminal and your text editor that you are going to be constantly configuring.
This is where dotfiles come in. They enable you to save configurations for your terminal and text editor (amongst other things) in one place. This can then be put in a Github repo which is accessible from other machines and also other people can access if they are interested. (Some people are reallyy interested in other people’s dotfiles…)
My dotfiles can be found on my Github
. As of writing this article there are a couple of main tools I am using:
- starship — a cross shell prompt
- nvim — my text editor
- tmux — my terminal multiplexer (I’ll get to what that is in a minute)
I first discovered Starship through this Youtube video
from Andrew Burgess. The most attractive thing to me about this tool was the simplicity of the toml file to configure the prompt as you would like.
Sexy yet informative terminal prompt
I haven’t done a whole lot of configuration with this one but honestly what you get out of the box is pretty good anyway. I just love the fact it give you concise but relevant information right away in your terminal which really helps give me context for the current project I am working on. It’s great if you are switching project quite a bit like I am.
I’m a little obsessed with Neovim as of late. I have written an article about the resources I used to learn Neovim
and I believe I am finally over the hump of the initial learning curve and setup process. It did however, take a while! I spent some time understanding the plugin ecosystem and how Lua works and I finally feel I have a grasp of the potential of the Neovim editor.
If you have never used Neovim then I suggest you checkout the article I wrote about resources to learn it. If you are an avid Neovim user then check out the plugins I am using
. Configuration with Neovim is super important as you can really hone the editor to your specific needs and requirements. I have found a plugin for pretty much everything I have needed so far.
Tmux is my terminal multiplexer. I don’t know what the word ‘multiplexer’ actually means but for me it allows me to clearly separate my workspaces in the terminal.
I can have a session for work, a session for personal projects, a session for a playground where I can learn new things (currently rust). Once you get used to the keyboard shortcuts
you can navigate around your sessions with ease.
There are specific things I have added to my tmux.conf
file such as resizing windows with specific keyboard keys, making the copying and pasting experience from the terminal to the computer clipboard more natural and a few other things to make it all look a bit nicer. This video
was very helpful in my understanding of the tmux config file.
Setting up your development environment just as you like is very important for any developer who wishes to produce valuable work. Configuration files can really help with this as they enable you to have control over detailed aspects of your setup as well as enable you to share this setup across machine.
These configuration files come in all shapes and sizes and it does take some time to understand them. However, it’s worth putting in a little time to understand these files as the power they give you far outweighs the effort put in.
I hope you enjoyed browsing my dotfiles and please share yours in the comments so others can enjoy too.