Hacker News new | ask | show | jobs
by The_Colonel 2179 days ago
There are things like refactoring which technically are supported by vim extensions, but are just utterly inferior to the dedicated IDEs.

For example - you know "extract method" refactoring. Pretty basic thing and I assume vim can do that. But on top of that when you extract the method, Intellij will go through rest of your code and try to figure out if some other parts could be automatically refactored to use this new extracted method as well. It will offer to change the method signature if needed to do that as well.

Intellij will - as you type - notify that the code you're writing is structurally duplicating an existing code and offer an intention to automatically refactor the code to remove the duplication.

Intellij offers an integration with databases - in my code I use a lot of SQL queries - intellij can connect to the data source and scan the schema. When you then type queries into strings, Intellij recognizes them as such, offers autocomplete to the tables/column and validates the query for correctness (also allows you to click through to the actual data view). It understands like 20 SQL dialects and things like JPQL as well.

Another example is the deep flow analysis which can point out logical mistakes as you type (things like NPEs). This is very helpful in daily programming, extreme example of that is shown here: https://blog.jetbrains.com/idea/2019/11/intellij-ideas-stati...

Most of the time when people showed me a "vim IDE", it looked like IDE from the 90s - highlight was that it showed you the list of class members, had a snippet manager and could sort of rename a variable. State of the art is much farther since the 90s though ...

1 comments

That sounds very useful and it's not something that vim gives you out of the box but I'm not sure that anything you're describing is not possible via LSP plugins and extensions.

Running a server to automatically search for duplicate code sounds exactly like the kind of task that LSP can handle.

Since VSCode has tools for deep flow analysis (although I can't say how they compare to Intellij) then I'm pretty sure I can access them from neovim.

Maybe if I was a Java developer something like Intellij would look more attractive but I've never really been impressed with the rest of the JetBrains IDE family.

Horses for courses I guess. If there's some tool you want that's only available in Intellij then that's what you'll use.

All of that is of course theoretically possible with LSP or other vim extensions. It's just that nobody did it.

Another thing is the level of integration. There are many tools which offer static analysis, duplicate detection etc. But it's completely different level of usability when you see this info immediately as you type.

People already use LSP in vim/neovim. Realtime feedback as you type is a thing in vim.

Here is an example for typescript users.

https://thoughtbot.com/blog/modern-typescript-and-react-deve...

Again this does require you to configure things and that may not be what you want to spend your time doing but it's perfectly possible.

Also I'll add that I'm not arguing that vim is better than any other particular IDE or editor, just that IDE like features can easily be added.

Yeah, I know that you can use LSP in vim. But LSP for most languages is a far cry from what you can get in "real" IDEs.

It's always "LSP could be just as good" or "support for that can be easily added" - but it's just not happening - nobody does the work to make that just as good.