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

There are four things which IDEs typically provide which I find invaluable. It's probable that some or maybe even all of them could be wedged into Vim or Emacs, but then you'd have basically an IDE.

1. Quick go to _anything_. In IntelliJ IDEs, it's double-shift, and then start typing some of what you want. Usually you can find the class or module or file you want easily, if not automatically.

2. Interactive debugging. This is so very useful. Usually it's just the fastest way for me to inspect a data structure at a certain point in time, or even find out what's going on in a framework that uses a lot of metaprogramming.

3. Jump to definition of thing (function, constant, etc.), and conversely show usages. In a well designed system of composable single responsibility functions, one can almost forget about files and navigate only with these (and (1)).

4. Git diff my branch to branch X. Lots of extra goodies can be included in this, such as interactive merge conflict tooling, etc.




My neovim does all of this and more. Yes ive blurred the lines of text editor and IDE. I enjoy the portability, speed, and customization it offers. I also like that I have everything I need in the terminal.

Its not for everyone though and it takes a lot of time to customize it perfectly for you.


I'm able to do all these with a simple text editor, an IDE takes up resources, implements tracking, and real programmers basically have no use for anything aside from a simple text editor.


Bit of a stretch to describe something that has all the features of an IDE as a "simple text editor". Notepad is a simple text editor.

What you have is a text editor that you've (presumably) augmented with a ton of plugins to turn it into a full IDE.


Is that the classical „real men don’t need guns, we kill with our bare hands“?


How's refactoring support and formatting code? Navigating code as in click and go to definition? I say this because I work with someone who uses VIM and these are constant issues working with them.


for neovim with lspconfig:

formatting code: `lua vim.lsp.buf.formatting_sync()`

go to definition: `lua vim.lsp.buf.definition()`

rename variable: `lua vim.lsp.buf.rename()`

type information: `lua vim.lsp.buf.hover()`

find references: `lua vim.lsp.buf.references()`

code actions (add missing import etc): `lua vim.lsp.buf.code_action()`

For more commands `:h vim.lsp.buf`.

There is plenty available through LSP today supported by all editors. IDEs provide a better debugging experience (with breakpoints and variable values) though that too can be done with vim/neovim using the debug adapter protocol and plugins built on it (similar to language server protocol but for debugging).


So, am I supposed to type all that cruft? Instead of just pressing alt-enter to bring up the suggestions menu, choose the obvious first item by pressing enter again, and have everything you have to remember several arcane incantations for done automatically..? I never got the command line purist crowd. I prefer spending time on solving business domain problems…


You can but it’s a lot a nicer to set key bindings.

For example I hit ,gd which I have mapped to the go to definition.

I also have ,fr mapped to find references.

You can come up with whatever mappings you want.

I have K (so shift + k) to show the type information.

Etc etc. Vim and neovim let you customize all this and anything else.


What if the suggestions menu crashes? Have you considered the extra RAM that is being used that could go further towards solving business problems? What if the curated menu of autosuggestions doesn't contain what you need?


I’m not sure whether you are sarcastic or not, but come on.. what if the LSP crashes, or you know, that also eats more RAM (and I am sure that someone with a 128GB laptop doesn’t get more work done than someone with only a 16GB one..).




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

Search: