I have spent plenty of time tuning up NeoVim and I really enjoy the text editing experience, but the IDE-like experience is still so, so far from the out-of-the box capabilities of a JetBrains product:
* visual debugging - cli debugging could simply never come close, not matter how much you love using a keyboard over a mouse
* hyper-powerful refactoring, well beyond what any of these language server plugins currently provide: rename file and have all imports corrected, extract class or function to different file and again have all imports corrected, etc.
* Out of the box using the interpreter or compiler from the docker-compose stack - everyone on the team instantly has an identical development environment
* Attaching the visual debugger to your app running in a docker-compose stack
The list goes on and on.
I would love to feel like the "real developer" trope by using only the terminal tools stitched together by endless config and scripts and whatnot, but the hit to productivity is impossible to justify.
> visual debugging - cli debugging could simply never come close, not matter how much you love using a keyboard over a mouse
Have you had a look at nvim-dap? It's awesome and I have a much better debugging experience than in VSCode/JetBrains (as it's completely keyboard driven). Have a look: https://youtu.be/SIYt1dopfTc
I mostly agree with this. If you primarily work on java/kotlin/csharp etc. it is hard to live outside intellij universe.
I am a web developer & my current dev setup involves sway window manager(with vim style bindings), intellij (with IdeaVim), ranger file manager (has vim style bindings), firefox with vim vixen, and of course NeoVim (for editing scripts).
They are all disparate tools, and have their quirks around vim emulation, but overall its a good enough coherent experience that I am quite happy with.
If you want even more vim bindings in your life checkout vim emulation in the web browser. If you browse a lot of link heavy websites it's quite nice, and the shortcuts are good.
There's a specific programming language where JetBrains hasn't gained much against the OSS alternatives, and that's Rust. Mainly because they decided to implement their own language analysis instead of adding support for the most wide-used one (rust-analyzer).
And it still lacks the ability to run remote containers a-la VSCode, where you can leverage all dependencies to the container itself.
Visual debugging in my experience is automatically jumping through the source files inside the editor. Which is nicer than asking the debugger to show 10 lines around the current line. There are some attempts like DDD that I think are not very popular.
Edit: also showing variable values while hovering with the mouse. Also, I forgot that Dr Racket can show you the call stack graphically connecting different source lines
Mainly that everything you could want to see while debugging is available without touching anything, no keystrokes, nothing. It's all in your view by default, with zero configuration or setup.
Showing the actual file and the ability to visually view the call stack and jump back up it is fantastic.
Setting breakpoints with a click or keystroke while viewing in the file is another important aspect.
Having the breakpoints available between runs without adding them to a text file... the list just goes on and on with little quality of life aspects.
* visual debugging - cli debugging could simply never come close, not matter how much you love using a keyboard over a mouse
* hyper-powerful refactoring, well beyond what any of these language server plugins currently provide: rename file and have all imports corrected, extract class or function to different file and again have all imports corrected, etc.
* Out of the box using the interpreter or compiler from the docker-compose stack - everyone on the team instantly has an identical development environment
* Attaching the visual debugger to your app running in a docker-compose stack
The list goes on and on.
I would love to feel like the "real developer" trope by using only the terminal tools stitched together by endless config and scripts and whatnot, but the hit to productivity is impossible to justify.
I just want to build software.