There's No Place Like $Home: A 10 Journey of Vim, Then VS Code, and Back to Vim

zazuke1 pts0 comments

There's No Place Like $HOME

Reduce motion

Highlight links

Use default theme colors

Appearance

Auto<br>Light<br>Dark

Contrast

Default<br>High<br>Desaturated<br>Inverted

Text size

75%<br>85%<br>100%<br>115%<br>130%<br>150%<br>175%

Font

Default<br>Serif<br>Sans<br>Dyslexic

Line spacing

Default<br>Loose<br>Very Loose

Letter spacing

Default<br>Loose<br>Very Loose

Images

On<br>Grayscale<br>Hidden

Reset<br>Preferences are saved on this device only.

There's No Place Like $HOME

A ten-year journey of mostly Vim, then VS Code, then back to Vim.

NOTE 📜 This is a post about AI. All views are my own and do not represent my employer. Please review my Disclosures .

Let me take you through ten years of text editors.<br>I've been programming primarily via a shell since 2016, and my dotfiles go back to 2017. I wrote the thesis that you should care deeply about the tools you use. In 2026 I use the same tools I did then. But a lot else has changed.<br>I entered big tech, and noticed how few engineers around me shared my tool suite. Most lived in a GUI editor where the terminal was optional and a shell was something you bolted on. I found it increasingly hard to communicate intent with colleagues. So, out of FOMO, I decided to try something different. After a decade of Vim, I changed my daily driver to VS Code.<br>Then, around 2025, the work itself changed. My workload and my approach to it were suddenly different.<br>IDE For Me?<br>At first it was pretty nice. The tooling was integrated: version control was a panel instead of a man page, the file tree sat right there, a debugger and a run button one click away. Nothing needed a name before I could use it; every action was a menu, every menu a button. For someone starting out it lowers the floor, and you can be productive before you understand the machine underneath.<br>My "Oh, this just works" moment was subtle but delightful: my compiler would print a filepath, line, and column in its output, and one day I realized I could click it and land on that exact spot in the source. It was exactly what IDEs promise: it just worked.<br>I took many other lessons from the IDE into Vim, and almost all of them collapse to a single keystroke: go to definition (gd, yes I had to setup language servers), find all references (gr), rename a symbol everywhere it lives (F2), the lightbulb quick-fix (F4), language-server autocomplete, a Problems panel for the squiggles (xx). I even bound the fuzzy file opener to Ctrl-P, the same key VS Code uses for the same thing.<br>It had quirks. A beat of lag sat between the keypress and the glyph, just long enough to notice; a one-keystroke edit became a command palette, a fuzzy match, an Enter; opening a 5,000-line file spun the fan up like a jet on a runway. The terminal lived in a cramped strip at the bottom, a few lines tall, where my whole workflow used to live. And the editor I tuned on my laptop was never quite the editor waiting on my desktop. Each one was small. Together they were ceremony.<br>By the end, though, it felt like maintaining a delicate garden. I would weed away panes so I could see more code and then they would sprout back up after a reboot.<br>My typical workflow would be:<br>My cursor sits in a function I just wrote. It calls an API I don't know, so I take a hand off the keyboard and mouse over it, waiting for the indexer to wake up.<br>Right-click the symbol, scan the menu, click Go to Definition. A new tab opens in another file and scrolls me somewhere I didn't pick.<br>That definition calls a bare helper. Hover it, wait for the tooltip, click Go to Definition again. A third tab piles on.<br>Read the helper, then hunt the tab strip for the tab that was mine. Click back, mis-click a neighbor, correct.<br>Back in my function, drag-select the wrong argument with the mouse, then fix the call.<br>Click into the terminal pane, run the file, and wait for it to come back.<br>$HOME, sweet, $HOME<br>The thinking then is the same now: an IDE built for everyone optimizes you for average. This doesn't mean IDEs are bad or that people who use IDEs should feel bad (even John Carmack swears by Visual Studio, the full Microsoft IDE, not VS Code). It just means tooling is worth the investment when you live in code (even your IDE). Before Vim I used Xcode, Sublime Text, and Atom, and I still think Sublime was the GOAT back then.<br>With shell tools, I am able to craft the perfect environment for me. I like coding at the speed of thought. I feel more comfortable navigating, modifying, and manipulating the code all via the keyboard. I like completely automatable environments. I like being in control.<br>My typical workflow is:<br>My cursor sits in a function I just wrote. It calls an API I don't know, so I read it in place. No mouse, nothing to wake up.<br>gd jumps to the definition, and the jump is recorded so I can come back.<br>That definition calls a bare helper. gd again, another hop on the jump list.<br>Read the helper. Ctrl-o Ctrl-o walks the jump list back the way I came, onto my function.<br>Back in my function, ci( swaps the argument in normal mode, no...

back like code click definition home

Related Articles