Hacker News new | past | comments | ask | show | jobs | submit login

I've used VSCode for Go and TypeScript/JavaScript for years. I recently tried switching to IDEA, and the difference is just stunning.

The Go support in VSCode relies on Gopls, which is a buggy mess. It frequently just stops working. It also lacks most refactorings (and no refactor preview). The Go debugger integration is okay, but Jetbrains' is miles better.

IDEA has tons of features that makes VSCode feels positively stone age:

* The "find/replace" across files has a result view with live editing.

* "Find implementations".

* Lightning fast search across many projects in one window.

* Symbol search, also lightning fast, across many projects.

* Extensive refactoring tools. Not just things like "extract method", but also linter-driven ones like removing an unused function argument, or fixing an identifier's spelling (updates all uses).

* Git support is tons better, including things like "Compare with..." allowing instant diffing against a branch or revision.

* Diff view is much nicer. It's also "live", like many things in IDEA; if you compare two files, the diff view updates when the files are change.

* GitHub integration where you can, for example, create, view, comment on, etc. pull requests within the IDE.

* Unlike VSCode, the experience out of the box is much more complete. I only had to install a few plugins (Prettier, my favourite colour theme, etc.).

I don't mind the extra gigs of RAM when the experience is so much better.

I don't like that it's not open source. But IDEA is a classic case of commercial software being vastly more mature than open source counterparts.




IntelliJ IDEA Community Edition is actually open source: https://github.com/JetBrains/intellij-community


> * Extensive refactoring tools. Not just things like "extract method", but also linter-driven ones like removing an unused function argument, or fixing an identifier's spelling (updates all uses).

The latter is "Rename symbol", which VSCode supports for anything it has language support for, and which works across files where the language support includes that. The former is often suggested as a quick fix with VSCodes linter support. Neither is foreign to VSCode.

> Git support is tons better, including things like "Compare with..." allowing instant diffing against a branch or revision.

This is very much available for VSCode. Yes, it takes a plugin (GitLens and GitGraph are the two I use, the latter for history/branch visualizations and conducting operations from the visualization.)

> Diff view is much nicer. It's also "live", like many things in IDEA; if you compare two files, the diff view updates when the files are change.

Again, there's a plugin for that. (The one I use is just called "Diff", but the array of different Diff plugins for different preferences available for VSCode is...enormous.)

> GitHub integration where you can, for example, create, view, comment on, etc. pull requests within the IDE.

VSCode has this. I mean, sure, like almost everything else it is via plugins (the official GitHub Repositories plugin and the official GitHub Pull Requests and Issues plugin.)

> I don't like that it's not open source. But IDEA is a classic case of commercial software being vastly more mature than open source counterparts.

From your description, it seems mostly to be a classic case of an IDE having a better OOB experience for the set of functions it is intended to support than an extensible editor before considering plugins for the latter, rather than being "vastly more mature".


You cherry-picked a few things where VSCode has some extension support, but I can assure you that the differences are huge.

> The latter is "Rename symbol",

No, I'm talking about linter warnings providing smart fixes, which overall are not provided by the Go plugin, and is a mixed bag with other languages. GoLand has tons of fixes for things like unused arguments, inconsistent receiver names, incorrect spelling, and so on. And the fixes are previewed before they are applied.

But let's look at "Rename symbol". As an example of how primitive VSCode is, consider this in Go. If the rename doesn't work — for example, because it results in a conflict with an existing name in some file — it will just abort; it's all or nothing. GoLand, meanwhile, allows you to inspect the refactor preview and tweak the places where there are problems, before you apply the whole thing.

VSCode also has no awareness of implementations. If you try to rename, in IDEA, a method implemented from an interface, it will suggest altering all implementations, including the interface it came from. IDEA even goes further and will pick up strings that look related, such as in mocks, debug strings, comments, and so on.

> [Git support]

I have used GitLens, but the experience is vastly inferior to IDEA's. With GitLens, you have to compare the entire working tree (by selecting both versions to compare), which gets shown as a (not live!) snapshot in the left sidebar. You then have to click the file to compare. In IDEA, you simply select "Compare with Branch...", "Compare with Revision..." or any of the many other comparison methods, and you get the diff for the current file.

I also vastly prefer IDEA's diff UI, which can collapse unchanged portions (like classic UNIX diff). And while VSCode aligns the files strictly by inserting gaps, IDEA will cleverly align the code with visual markers, which I find much more readable. (IDEA has a toggle for the VSCode mode, of course. It also supports unified diffing as a toggle.)

I guess the GitHub PR extension has similar functionality as IDEA's, but the UI is primitive in comparison.


Some of your points are very true, but you should perhaps give a second try to VsCode because most of the features you describe are now available in VsCode or available in very common and popular VsCode extensions.

You need to install these extensions but that's the way it is designed, and a small JSON file is enough to have the extensions recommended in a given project.


> most of the features you describe are now available in VsCode or available in very common and popular VsCode extensions.

The question is: which extensions are those? And do they work?

With IDEA all this is just bundled. And you reach for extra extensions for, well, extra stuff that's no core functionality. With VS Code I've found it's a glorified text editor that you have make work, maybe, and unreliably.


I didn't stop using VSCode; I still use it. I only use IDEA for Go, via GoLand.

Feel free to suggest extensions that bring VSCode up to par with IDEA. The Go extension certainly isn't one of them.

For example, are there extensions to do file comparison the way describe? Or live, editable "find"? Refactoring with preview?


VSCode is not fully open source, either.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: