My terminal setup

The programs and tools I use to be productive in the terminal.

This is a setup on Mac OSX. I prefer Linux over Mac's unix-like environment, but for the purposes of most of this, they work similarly enough to not really notice.

Emulator and shell

iterm2 running zsh with oh-my-zsh (mostly because it works and I was able to optimize my shell startup in other places so that the shell spins up effectively instantly) and the starship prompt. I've also used alacritty but prefer iterm2 on Mac.

Text editor

I'm moving to helix from neovim.

Locating stuff

  • exa to replace ls
  • fd to replace find
  • rg to replace find + grep
  • zoxide to quickly get to folders
  • joshuto because Mac's Finder application is awful

Scripts

I have a few aliases and functions in my .zshrc file, but I've moved most scripts to navi.

git

I have a global gitignore file for things like "node_modules", "target", "dist", "build", etc. directories. I use the delta diff visualizer. I used to handle merge conflicts by hand until I had to undertake some very complicated conflicts and I was pointed to IntelliJ's 3-way diff. I have the gh GitHub tool installed, though I rarely use it.

Language versioning

I use fnm to manage NodeJS versions, npm to manage Node dependencies (though I've used yarn v1 often as well) and poetry for Python virtual environments and dependency management. For Java and Kotlin, it's maven, and for programming languages that have their stuff together, their official CLI tools.

Other