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.
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.
Refactoring support in modern IDEs goes far beyond renaming public fields and methods.
In truth, you just don't know the tools that well. And that's ok, but as someone who does and regularly does these things in both IDE's and in vim, you're wrong.
But I'm not going to bother trying to convince you, the same way I'm not going to try and convince you that my gf of 11 years is pretty awesome. I don't need you to get better to know that you're wrong.
And I started on vim a long time before IntelliJ :-)
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.
> 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.
I see we are on the same page : )
> It can with a proper regex. Mostly. Depending on the language, your patience, and the amount of false positives you are comfortable with.
For everyone else: in any of the three big Java IDEs, and in a number of other cases, you don't need much patience or tolerance for false positives, at least if your code isn't too unreasonable (with any sufficiently expressive language you can of course always fool it by somehow accessing things dynamically).
> 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.
This is awesome!
And what language do you code in?
$ gorename -from '"my-package".myFunc' -to myRenamedFuncSince 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'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.
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.
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.
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.
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.
And worth every penny, for me.
I've got a git merge/diff wrapper that falls back from p4merge to idea and finally back to stock diff.
If you're not using the refactoring tooling then you won't understand why many people love it so much.
[It's worth looking under the hood at the plugin APIs. The editor doesn't work on text files. It works on ASTs.]
But then I needed proper support for Vue 3, Tailwind and Svelte. VSCode was (is) light-years ahead but what drew me away was how Jetbrains handled the issues. Endless hours writing tickets, creating examples, ... for nothing. Finally, after switching to Linux it turned out that US int. keyboard layouts don't work properly. There's a workaround, but again, the way the support handled the issue was not what I expect from such an expensive service. I was basically told to read through years old long issues to find out how to manually fix it.
That was the day I canceled my subscription.
VSCode is totally up to the job. But somehow I'm still not happy.
Maybe time to try Neovim or Helix (multi LSP needed).
I’ve never used the standalone apps. Do they provide a better experience?
In my experience there is no difference in terms of slowness, no. The standalone apps are usually just bundled with more features for the specific use case by default and in some cases they have features you can't readily get in just IDEA.
Some projects with mixed languages (like a Ruby backend, HTML/JS webapp) I've had to kick IntelliJ a bit to get it to cooperate and find tests correctly
Someone else mentioned CLion, I think Rider also has features you can't get via plugin (maybe there is no .NET plugin..?)
It's (almost) 2023, the way to develop applications is to put a reproducible Docker container with all the dependencies + debug tools you need in the repo, so that anyone can clone it and spin it up in their IDE.
VS Code has amazing support for this, while the only Jetbrains IDE that comes close is CLion.