While it’s no secret that many developers mainly use the terminal as their way of interacting with their environment, each person ends up developing their own personal setup that’s tailored to the way they work on a day-to-day basis. Finding the perfect set of tools to create a seamless workflow isn’t an easy task, since there’s always one more thing that could be automated or made simpler.
With this in mind, I set out to find out what the terminals of some of PSPDFKit’s engineers look like. Here are the results!
I alternate between macOS and iPadOS. On the latter, I use a companion Linux VPS where I can
ssh to develop software.
On macOS, I use iTerm2. It’s reasonably fast for my needs and compatible with pretty much any kind of standard related to color management and rendering. On iPadOS, I use Blink, which is not as full featured as iTerm, but it’s quite fast and well maintained.
More than anything, Vim (or more precisely Neovim) and tmux. For years, I’ve been writing software in the shell, and Vim’s editing paradigm is pretty much burnt into my muscle memory, so I can see myself keeping this workflow for a long time.
Most of my aliases revolve around Git:
s, which stands for
git status --short, which gives me an easy-to-understand status of a given repository.
lg, which stands for
log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit —. This alias prints a colored and human-readable Git history with a visible branch history.
cl(mnemonic for “clean local”), which stands for
git branch --merged | grep -Ev "(^\*|master|main)" | xargs git branch -d. This command removes all branches that have been merged with the current branch (even if the merge commit is a squash).
Zsh, mostly because plugins provide a lot of useful aliases out of the box. I’m a fan of the Git plugin.
gcp for cherry-picking — so much less typing!
Primarily Windows. I also have a MacBook, but I only use it when I need to do iOS/macOS development.
PowerShell. I started using PowerShell because it was the easiest thing to use on Windows, but it quickly grew on me to the point where I made it my default shell even on macOS! Once you get over
That-Weird-Syntax, it becomes evident that PowerShell is one of the most readable and intuitive shell languages.
gsw to allow for fuzzy search and auto-completion when switching Git branches. I also use
gri 3 for
git reset HEAD~3, and
gnuke for completely undoing all changes, staged or not.
macOS Big Sur
The default terminal app.
macOS Big Sur.
fzf as a command history and file fuzzy finder (I have it bound as a replacement to Control + T and Control + R).
fasd to switch recent directories faster (it’s bound to the z alias since I used z for the same purpose in the past and I’m used to it).
asdf for tool version management. This was a game changer for me — no more headaches when running Ruby, Node, Elixir, etc.
Git-related aliases from Oh My Zsh.
macOS Big Sur.
fish shell, because it works nicely out of the box.
Mostly Git aliases and a bunch of ADB commands for Android.