why i left jetbrains for the terminal
“not because the terminal is better. because of its customizability”
Jetbrains gives students free memberships, and oh boy did I lean into that hard. 👏 for that advertising tactic, it made them thousands of dollars off of me.
I learned all of the keybinds, shortcuts, debugger functionality, everything I could get my grubby little hands on. I got quick.
Go to reference, find usages, tests showing what had passed and what hadn't.
At the time, circa 2017, I was primarily developing on a linux box. Also at the time, things would break outside the development environment * a lot *. Most of the time it was me being an amateur and breaking it myself, but to open up a full IDE for little one line fixes here and there would have been insane; that's what vim is for.
I settled down for one evening and swallowed the vim tutor over and over again until I felt proficient in it, based on some blog post that said it might make a bit faster of a developer.
I pulled IdeaVim into Jetbrains Ultimate, and fought myself every day for months to try to get some proficiency in the keybinds. It wasn't easy, and it certainly didn't make me faster. There's a part of me that wants to look back at it and say there was some definitive point where it all clicked... but I don't think that's true. Even after I could feel my typing move to be more economical (smaller amounts of keypresses to get the same end result) I still felt like I was having to put thought into every key stroke. Like telling yourself to breathe in, breathe out, breathe in...
What I didn't know was that it was because I wasn't using vim. I was using IdeaVim. There wasn't a feature parity. Some keybinds were reserved by Jetbrains and so I wasn't building the intuition I should have. And that's the end of that. I would google "what's the motion to select a block of text", find it's the simple, humble,
I got to carry my muscle memory with me.
Honestly, I didn't even look back. This told me that no matter what difference there was in my old Jetbrains based workflow that I could fix it.
It's what keeps me in the ecosystem to this day.
AI using folks are seeing this benefit of rapidly prototyping HTML pages that aggregate and warp and format some data for them to consume more efficiently. I'm over here thinking about how I can do the same thing inside my code editor.
And I think I'm going to stay in the ecosystem quite a bit longer.
Visual Motion Block C-v, and that I wouldn't be able to use it because it wasn't implemented and that's that. Clipboard registers were often broken. Window splitting was inconsistent. If I remember correctly the jump patterns wouldn't work because Jetbrains the IDE would claim ownership.
It wasn't the biggest deal, it certainly wasn't worth crying over. I would just see that the support wasn't there and find some other way.
A few years later I was working a contract with a popular blockchain company that used Haskell as their language of choice. Jetbrains support for Haskell was about non-existent, and so I asked a few of their developers about their choice of environment, to which they responded Emacs.
I'm not going to get into editor wars here, at the end of the day you can configure emacs and neovim to do about the same thing. But once again I found myself in a spot of "this kinda sucks but it feels like there's something there".
And it was, I just didn't know where there was.
I pulled in Doom and got cracking with some Jetbrains-ish defaults.
A couple months in I hit a teeny, tiny, inconsequential friction point. It was something like a menu had popped up in the editor, and my muscle memory of C-j didn't scroll down. It tried to add a snippet.
The solution? Just override the keybind!
(keymap-set 'whatever-keymap "C-j" #'whatever-mode-down-entry)