Why would you even have dotfiles?

Why would you even have dotfiles? Is a question I get a lot.

In this article I'm going to try and explain the reason behind having them and what mine do. As the readme states, I offer no warranty (or sanity) when you use these. As with most things, it's best to learn the reason why and then implement your own version.

Here's what they look like for me:

Dotfiles Installed screenshot

Why would you even have dotfiles?

When you are using a Unix-like operating system (Linux, MacOS, etc) chances are high you've encountered a "dotfile" these are the files like for example .bashrc that do some sort of configuration for your system.

These files are probably some of the most important and flexible files on your computer. Beyond being responsible for configuration they are also highly customizable, enabling you to turn your terminal environment into a place that fits your workflow perfectly.

Once you start tinkering with files like this, it is obviously best to keep some sort of record, like most IT people you quickly end up using some form of version control to keep track of the growing insanity. Mine can be found here

ZSH

I started of using a wonderfull package called Oh-My-Zsh. I imagine most people switching away from bash start here. Robby Russel has done a tremendous job in creating and maintaining this.

But, like most things, I notice I wasn't using even 10% of everything it offered, which made me want to get rid of the "bloat" that having this framework brought with it. I converted most of the in my opinion good ideas the framework offered and stripped away the stuff I wasn't going to use.

TMUX

Tmux is a terminal multiplexer for Unix-like operating systems. It allows multiple terminal sessions to be accessed simultaneously in a single window. It is useful for running more than one command-line program at the same time.

It can also be used to detach processes from their controlling terminals, allowing SSH sessions to remain active without being visible

Beyond being able to control multiple SSH sessions I also use it for local development, I know iTerm2 and other software has the ability to deal with multiple splits and such, but tmux also allows me to deal with background tasks, jobs and keep everything confined to a single window.

NEOVIM

Vim is pretty old, as such it’s source code is archaic & difficult to maintain, this was a primary reason for the current dev team for Neovim to fork Vim & set off on a journey of their own.

This also means that it's easier to support more plugins and the ability to ditch VimScript and use Lua instead. Out of the box Neovim is noticably faster then Vim.

Mine is currently setup to mostly deal with Laravel, Python development as those are the things I use it for the most.