March 8, 2026•5 min read
Not long ago, I wrote about my move from VSCode to Zed.
At the time, I was genuinely happy with it.
Zed felt fast, clean, and modern. I liked the balance between editor comfort and Vim motions. It felt like a good place to be.
But then I started spending much more time with tools like Claude Code and Codex CLI.
And once that happened, I noticed something simple: I was spending more and more time in the terminal anyway.
At that point, it stopped making sense to treat the terminal like a secondary place. If I was going to live there for a big part of my workflow, I wanted to make it a better place to live. This also gave me the final excuse to finally invest some time to make it work in both of my setups: Mac and Ubuntu VPS.
That is what pushed me to rebuild my setup.
Why I Changed
This move was not really about leaving Zed because it was bad.
My workflow changed. I was not writing code the same way as before. I was managing multiple features and projects at the same time, and more of my work was happening in the terminal as I was orchestrating Claude Code.
When that happens, the terminal stops being just the place where you run a few commands. It becomes part of the actual environment, and all the rough edges become much more visible.
I also wanted consistency.
I did not want one comfortable workflow locally and another improvised one over SSH. I wanted the same mental model in both places. Same shell habits, same navigation, same editor, same way of keeping sessions alive.
So instead of thinking about the terminal as support tooling, I started treating it as a first-class workspace.
The terminal by itself is quite powerful, but when you come from an IDE background it can feel a bit too naked. I wanted a bit more out of it.
The Setup
I rebuilt the setup around a few tools that each solve a specific problem.
Shell and prompt
This is the base layer. It gives me the shell I live in every day, plus a prompt that stays clean and fast.
Sessions and remote work
This is one of the tools that clicked much later for me.
Now it is central. It gives me persistent sessions, better context switching, and a much nicer experience when working on a VPS over SSH.
Editing
This is my editor setup. Neovim gives me a terminal-native editor, and LazyVim gives me a strong base without having to build everything from zero.
Navigation and search
This is where a lot of the speed comes from.
zoxidehelps me jump between projects quicklyfzfmakes fuzzy finding feel naturalfdandripgrepmake file and content search much faster
File viewing and browsing
bat makes reading files in the terminal much nicer, and yazi gives me a file manager that still fits the same environment.
Git
I still use git directly, but LazyGit makes many everyday operations much easier without leaving the terminal. I wrote more about it here.
Keeping It in Sync
A setup like this only works if it stays maintainable. I use GNU Stow to manage the config. It allows me to keep one source of truth for the setup and use it across both my Mac and my Ubuntu VPS.
Each config lives in the repo and gets symlinked into the right place in ~.
That gives me:
- one source of truth
- shared defaults across machines
- local overrides where needed
So instead of rebuilding my environment manually or letting machines drift apart, I can keep the setup consistent and evolve it over time.
A good setup is not just about nice tools. It also has to be easy to maintain.
What Changed in Practice
The biggest difference is that the terminal no longer feels like a place I visit.
It feels like the environment I work in.
That matters more now because of tools like Claude Code. If CC is a regular part of my workflow, then the quality of the terminal environment matters a lot more than it used to.
This is also why tools like tmux finally clicked for me. Before, I understood them in theory. Now they solve a real problem I have every day.
Repo
If you want to see the actual setup, here is the repo:
I also keep a couple of practical reference files in there:
shortcuts.md— the keybindings and shortcuts I use mostflows.md— the most common workflows, step by step
That part matters to me as well. A setup is not only the config itself. It is also the habits and flows around it.
As a small side project in a similar spirit, I also built Markdown to Paper. I thought printing Markdown cleanly would be much simpler than it actually was.
I share more small workflow notes and experiments on X.