@[email protected] @[email protected] none of those things are things I could not do in my text editor. This comes down to the definition of IDE, which is fuzzy, and defined differently by different people. My personal definition is: IDE understands the language being used on an AST-level at least (vim with a language-server is an "IDE" in my view for example), and provides a set of pre-made tools to act over that AST. While an editor works at the level of text, and provides tools that works over textual content in general. Working at the level of text is very powerful (much more powerful than IDEs in my opinion), and much faster performance-wise. For example, I can, in Emacs, grep for a symbol, record a macro that goes to each result, then does a very complex custom ad-hock transformation specific to my code, and run it over all the results, watching the outcome of each automatic execution, while collecting all the modifications into a patch file, then sending it as an email to my colleagues, and announcing it on an IRC chat channel. All of those things are "textual", and thus can be worked productively together within the same paradigm. An IDE cannot provide such power just by "understanding" the code of the specific language I'm currently working on. Jumping to definition, mass-renaming, replacing calls of a method with its content (i.e. inlining) are some of the easiest things that can be done at the text level.
The real positive for the IDEs usually, is low barrier of entry. The constraint of the pre-made operations acting upon structured ASTs and content, ensures that the user doesn't need to learn much before becoming productive, all while pointing out your mistakes and guiding you with hints and suggestions. The textual editing paradigm is a playground for infinite creativity, and requires a lot of learning. Nothing stops you from shooting your foot off, and ultimate mastery is forever a moving goalpost.