Simple example: (any language, e.g. Rust) rename a function across multiple files and undo it. Let me know how you'd do it in your editor of choice.
Since then, I've been using CIDER on emacs to do Clojure development, and I haven't had any issues.
I don't think I can count on two hands the number of times I have to do that in a year. As for undoing it I don't think I've ever done it at all. Anyway it doesn't matter because vim + CoC can do it. And for undoing it I guess I simply rename it back to the original name. Actually I just tried and yeah, it works.
One of these day I'd like to sit with a JetBrains user and see how they work. I'm sure it's a great IDE but so far I haven't heard about anything life changing.
I actually don't use IntelliJ now for reasons not germane here. I'm on neovim, mostly with Rust and javascript/typescript). This is great in many ways but the ergonomics of editing, even with LSP integration, are much more like editing text, which is more distant from my mental model of the code.
1. Refactoring
2. You are experimentally coding and changing names of methods and variables as you realize you need to split stuff up
3. One of your colleagues can't name stuff for shit
The IDE I use makes it so easy it's just a thing I do without even thinking about it.
Another great thing is just highlighting some code and with a simple keypress extracting that code to a new method, with the right return type, params, etc. all done automatically. Not quite right? Highlighted the wrong rows? Press ctrl-z.
I'm not saying JetBrains isn't fantastic, their products certainly are, but the examples given as to why I should switch are less than convincing. Just use whatever works for you.
It's similar to the flak I get for using an iPhone instead of Android. "You can't customize it!"... I don't want to.. I just want it to make phone calls and browse the web.
OR, as you said, since I have mostly used IDEs all my life, I've learnt to leverage these tools and so I don't always aim to write something to perfection the very first time. Instead I use my IDE as a whiteboard and see where it goes.
$ gorename -from '"my-package".myFunc' -to myRenamedFuncAnd worth every penny, for me.
Edit: Not claiming this is better, just saying what I get by with. I have never used an IDE in my career so far, or any autocomplete or code modification features.
I did sth like that (I had bash scripts for common programming "refactorings" and "queries" like "print all classes and methods where this variable is used"). I couldn't use a modern IDE cause we were programming on a legacy linux server through ssh for licencing reasons.
And the (C++) code was written by a guy that learnt C++ and OOP on the job and it showed. Class hierarchies were sometimes 8 levels deep and class variables were reused for different purposes to "save effort on serializing them" :)
So if the user interactions were in the same order and with the same text prompts - a class would inherit them and add some new ones. Even if the old class was just accidentally asking the user similar questions :) So OR_PalNr could mean shelf number in base class and Printer number in descendant, because both times the user was asked to "scan the barcode", while the callstack was a mix of methods from both classes :)
Fun times.
BTW nowadays I mostly work with IntelliJ, but sometimes a script is still the best way to understand the code. For example grepping the git blame output is often very useful. It's never 100% reliable, but it's often good enough.
And what language do you code in?
You can undo/redo with cmd+z or cmd+shift+z.
replace cmd with ctrl on linux or windows.
So, from the technical point of view I would say VSCode is equally good.
What I miss most is the UX. Once you get used to the Jetbrains IDEs, their usability is really awesome.
* turn on the Match whole word and Match case modes,
* review the found occurrences;
* press the Replace button.
https://www.abareplace.com/blog/blog_rename_method/
Disclaimer: I wrote this program.