I guess it depends on your definition of an IDE, and where you're most comfortable/productive. I see a lot of posts about autocomplete, refactoring, linting, tooltips, tests-by-cursor/file, snippets. Thanks to a very friendly plugin community, you can get all of these in vim, emacs etc. I like vim, and it has nothing to do with hubris.
For me it's mostly about:
1. proximity to the terminal: I find cli tools very useful for most of my daily tasks. Using an editor puts the terminal first, and my editor second. One-off tasks are a tmux split/tab/session away and everything is neatly organized.
2. consistent interface: Working with a terminal is neat because everything is text and it is composable.
Working in vim, all menus are just buffers - you can navigate them the same way as you would your code. Searching, navigation, jumping between windows/menus, filtering -- everything stays consistent.
3. quick n' dirty workflows: If I identify a task-specific workflow I want to improve in vim, it is pretty easy to drop in functions and/or keybindings to do what I want. The interface was built in a way that makes this easy. Writing a plugin for visualstudio, or jetbrains etc. requires knowing a lot more about the editor you're working in and how it's built. Maybe it just feels that way to me.
4. 0% adjustment when working over SSH: tabs, splits, etc. both in my editor and terminal are identical in an SSH session. No discomfort. Mostly useful at home.
5. low distraction: This one's personal. IDEs are intimidating, hundreds of buttons, menus, logs prompts all fighting for your attention. If I click through a deeply nested menu I often forget what I'm doing - especially if there is a fire. Functions and Muscle memory works for me. It clearly does not work for everyone.
> Thanks to a very friendly plugin community, you can get all of these in vim, emacs etc. I like vim, and it has nothing to do with hubris.
> 0% adjustment when working over SSH: tabs, splits, etc. both in my editor and terminal are identical in an SSH session. No discomfort. Mostly useful at home.
Aren't these two benefits mutually exclusive? If you're got a very personalised vim setup, then vim on your workstation is going to be potentially dramatically different to vim when sshed into a remote machine
That's a good point!
If you have your own user account you could dump your .vimrc on there.. but maybe you don't want a lot of vim plugins on a server.
Now that vscode has a plugin that uses your local setup to edit files over SSH, my argument is a lot less compelling. Even at home, I have a lesser vimrc I provision to servers - I found it hard to justify installing treesitter, linters, etc. on a server where I'm mostly dealing with json/yaml/shellscript.
For me it's mostly about:
1. proximity to the terminal: I find cli tools very useful for most of my daily tasks. Using an editor puts the terminal first, and my editor second. One-off tasks are a tmux split/tab/session away and everything is neatly organized.
2. consistent interface: Working with a terminal is neat because everything is text and it is composable. Working in vim, all menus are just buffers - you can navigate them the same way as you would your code. Searching, navigation, jumping between windows/menus, filtering -- everything stays consistent.
3. quick n' dirty workflows: If I identify a task-specific workflow I want to improve in vim, it is pretty easy to drop in functions and/or keybindings to do what I want. The interface was built in a way that makes this easy. Writing a plugin for visualstudio, or jetbrains etc. requires knowing a lot more about the editor you're working in and how it's built. Maybe it just feels that way to me.
4. 0% adjustment when working over SSH: tabs, splits, etc. both in my editor and terminal are identical in an SSH session. No discomfort. Mostly useful at home.
5. low distraction: This one's personal. IDEs are intimidating, hundreds of buttons, menus, logs prompts all fighting for your attention. If I click through a deeply nested menu I often forget what I'm doing - especially if there is a fire. Functions and Muscle memory works for me. It clearly does not work for everyone.