In some cases we are forced to use a specific IDE. Not optional.
I have a normal job using go + angular/react, lots of databases (postgres) and lots of bare-metal OS shenanigans. I use Vim with 2 plugins. One fuzzy file finder and one for integrating with go.
I've used the JetBrains products daily for many years. These are very slick and I basically regard them as works of art, but I ultimately don't need them (anymore?).
It took many years to get the vim movements into the core of my being and this was indeed quite an investment, but my hands usually move the code now. Sometimes I can just watch them shifting blocks around as I'm barely conscious anymore of the actual physical movements themselves. This sounds like satire I'm sure, but I'm dead serious. This is actually a thing that exists. Not fundamentally different from being unconscious of the key presses when touch typing.
Once you get to this level of familiarity with vim, the shell and the entire Linux or BSD ecosystem things really start to fly and the need for an IDE quickly fades into the background. It is at that point that "why do you need an IDE?" because a serious question.
(Of course this is all moot if you are embedded in a highly specialized ecosystem with its own tools and ways of doing things.)
I've been using IntelliJ for at least 10 years now.
If you have used it, you know what I'm talking about.
IDEAVim plugin provides Vim key bindings and Vim editing mode, so it has the best of Vim and an IDE in one application.
Refactoring and navigation in IntelliJ is superior to whatever you can hack together in Vim. You can integrate Vim with a language server but then what's the point? Just use an IDE.
At work we are forced to use a specific IDE. It's a niche programming language not supported by any other software. Vim is not an option.
IntelliJ enables quick refactoring of large JVM projects without messing with language servers. It's all integrated and just works out of the box.
IDEAVim plugin provides the Vim keybindings and the Vim editing mode so it's the best of both worlds for me.
IDEs aren't perfect - they often have performance issues, new bugs with every update and do confusing things like marking completely valid code as errors. One of the reasons why I stopped using IDEA after many years of being a fanboy is that I found these unexpected behaviors and bugs getting in the way of actual work. For example, you might reopen your project in the morning to find out that everything that worked perfectly in the evening is suddenly broken, and then you have to spend half the day reinstalling previous versions of plugins and cleaning caches. While editors might be a bit simpler, they're always works reliably.
>At work we are forced to use a specific IDE. It's a niche programming language not supported by any other software.
yes, sometimes is no any choose.
But in all seriousness a good IDE is much more than a text editor and buttons which run terminal commands. The main thing a good IDE has is a good debugger, which not only allows for stepping through code easily, but also shows the values of variables, memory, registers, in one easy to use interface.
If you don't use a debugger then either you're only building very simple programs, or you're stuck in some sort of special hell when it comes to debugging.
I never got in the habit of terminal debugging, but I'm sure some people prefer it over using a GUI. I'm that way for git: The command line interface is unintuitive, but I've gotten accustomed enough to it that it feels comfortable.
Another thing that always gets lost in these dev env debates is what language and use-case. I do mostly C++, and most of my time is spent going between 2 or so buffers. I'm not doing something that requires zipping across several unique files per minute. Even if I do need to change files, having a slower mechanism to get there causes me to think more carefully about what I actually need to do there. So the extra 5-10 seconds aren't fully lost.