MacOS software development tools
I cover the different tools I use on MacOS to facilitate and speed up my work as a software developer.
Terminal
I use iTerm2 as my terminal. It allows me to split my screen into multiple parts when I need to monitor multiple processes on a single screen. CMD+D
and CMD+Shift+D
for horizontal and vertical split respectively. One setting I always tweak is the line buffer size.
As a shell, I use Oh My Zsh for its out-of-the-box plugins offering shortcuts and because it displays my current branch in git repositories. My main shortcuts are for git and folder navigation:
gco
: git checkoutgm
: git mergegl
: git pullgp
: git pushll
: ls -l..
and...
, etc:cd ..
,cd ../..
, etc
For folder navigation, I also use autojump which allows me to jump quickly between folders I visited like j my-repo
. It matches the target folder by name and number of visits.
I don’t like the wall of text that man
pages usually output, so I use tldr pages.
Git client
I use tig as a CLI git client, it’s a fast tool that allows me to stage files, cherry-picking blocks of codes or lines if needed. Navigating through the log is very convenient as it supports the same search keys as less
. Here is a great article about it.
You can open the log view with tig
, but I recommend setting up this alias to open tig in Status view directly: alias s="tig status"
. If you use “Oh My Zsh”, you should append this in ~/.zshrc
.
I configure git
to track remote branches automatically: git config --global --add --bool push.autoSetupRemote true
.
Also, I prefer that git branch
(or gb
) doesn’t pipe its output in less with git config --global pager.branch false
.
Node.js
I use nvm to work with multiple versions of Node.js. You can install a new version like 20 with your global dependencies using: nvm install 20 --reinstall-from=current
.
Switch between versions easily with nvm use 18
and update your default with nvm alias default 20
.
JavaScript/TypeScript IDE
As the majority of people, I use the VS code IDE for JS/TS.
I open it from the terminal using code .
which you can set up like that.
For extensions:
- GitLens provides blame information on lines of code, for context
- Jest runner easily runs single test suites from the IDE, with a debugger if needed
- ESLint, SonarLint, Shellcheck, and Prettier in the linter department
Java
I use sdkman to install and switch between Java versions.
I use IntelliJ as an IDE for Java. It has a lot more built-in tools for Java development and beats VS code to it. It requires some time to learn all the shortcuts that will make you a power user but makes up for the loading time it spends indexing the projects.
Misc
For many of the tools here, I used homebrew to install them.
For app multiplexing on the desktop, I use Moom which is a paid tool. It allows me to resize apps to fit half or a quarter of a screen like on Windows.