I'm not a fan of any IDE brand or company. I'm a fan of features. Any respectable IDE must have the following features:
- jump to declaration
- autocomplete of fields and methods of an object
- autocomplete or tool tips for function arguments
- code templates
- find all the usages of a variable, type or function
- rename variables, function, types etc. all over the code base(and do it correctly not blindly like with sed)
- select a piece of code and extract it into a function
- select multiple fields and methods and extract them into a separate class
- highlight pairs of parentheses, brakets, curly braces and be able to jump between them
- highlight searches
- show line numbers
- search/replace text in current file or over multiple files(aka grep and sed but integrated into the UI)
- be able to open a terminal in a pane
- search for a type all over the code base
- search for a global function or variable all over the code base
- display tree of included files(for languages that allow including other source files like C++)
- display tree of subtypes/supertypes of a specific type
- display a list of all overrides of a method and be able to jump to them
- semantic checks(e.g. check that the types of the arguments in a function call match those from the function declaration - of course for languages that have a type system)
- display syntax/semantic errors as I type
- a file explorer should always be easily accessible
- automatically select the current file in the file explorer; be able to turn this behavior on or off
- Copy the full path of the current file to clipboard
- Copy the name of the current file to clipboard
- Autoformat the code
- Autoindent
- Syntax highlight
- debugger integration
- build system integration
- display an outline tree of the source code ine current file
- have a local history of all the changes to a file
- version control integration
- diff between current and previous version of the current file
- search files by name in the entire code base
- when many editor tabs/buffers are opened, search through them by file name
- spell checking in comments, be able to turn it on/off
- generate documentation from comments
- fold/unfold code blocks
- replace tabs with spaces
- show special characters
- block editing
- place coursor in multple places and perform the same editing changes in multiple places at once(like in sublime)
- jump over paragraphs
- jump to beginning/end of file
- open documentation of function/class/type/etc. under the coursor
- set bookmarks in code
- have a history of searches and be able to redo older searches
- list all TODOs/FIXMEs from all over the code base
- split panes vertically/horizontally
- textual autocomplete (meaning autocomplete if identifier is already present in current file)
- linter integration
- UML diagram generation
- erase the current line with a single key binding
- move current line up/down with a single key binding
- display object instance tree
- and possibly many others that I just can't remember right now...
Now I don't care if it's vim, emacs, vscode, eclipse or jetbrains offering these features. From experience I learned these features make me most productive...coupled with command line tools it gets even better. So if these features/tools are available in an IDE/tool suite then I'm a happy programmer and I will use them. I don't have time to be a fan of this editor or that editor...even though I do like to enable vim key bindings if they're available once in a while.
Now I don't care if it's vim, emacs, vscode, eclipse or jetbrains offering these features. From experience I learned these features make me most productive...coupled with command line tools it gets even better. So if these features/tools are available in an IDE/tool suite then I'm a happy programmer and I will use them. I don't have time to be a fan of this editor or that editor...even though I do like to enable vim key bindings if they're available once in a while.