Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

More that you want to carve a bowl out of wood. Vim is like a knife that with some modifications you can turn into a carving knife. VSCode is like a chainsaw that has attachments that have been made for it and it also has bowl carving attachment.

If you don't know your tools, then you can easily mess the knife modification and not end up with a carving knife. The chainsaw with ready made attachments is way easier to get going, but in return you have to carry the chainsaw with you and if there are any problems with the tool itself you probably aren't going to be able to fix or modify it yourself.

So it is more like trading initial speed with more precision, but also being able to do more after the initial learning curve.



> The chainsaw with ready made attachments is way easier to get going, but in return you have to carry the chainsaw with you and if there are any problems with the tool itself you probably aren't going to be able to fix or modify it yourself.

This is where your analogy breaks down for me. The "chainsaw" (VSCode) is absolutely perfect for the tasks I'm using it for. When I write Python code, the Python extension gives me exactly what I want. That's because the environment it creates has been fine-tuned based on feedback from thousands of users with similar requirements to my own. There's no need for me to modify anything, any more than I modify my car or my trousers. It's simply ready for me to do professional work, and whenever I have special requirements, I know that I will find an extension that caters to them also. I don't need or want to reinvent a wheel that has been invented hundreds of times already, and polished to perfection through more man-hours than I could ever hope to invest myself.


> This is where your analogy breaks down for me. The "chainsaw" (VSCode) is absolutely perfect for the tasks I'm using it for.

Then just use the chainsaw... and accept that the knife may be absolutely perfect for the tasks of somebody else.


You get exactly the same functionality with (neo)vim plugins.

Only difference is that because vim has been open-source for decade, there are many many more plugins, and hence the choice is harder to make. VSCode also helped improve the (neo)vim experience (e.g. language servers)

Comparing VSCode and Vim is like comparing a standard calculator with an RPN one.


> Only difference is that because vim has been open-source for decade, there are many many more plugins

No, the main difference is in the quality of plugins, not in how many there are.

For example, Rust-Analyzer provides an official VSCode extension, which is professionally maintained by members of the Rust core team. The extension is part of the Rust-Analyzer project itself, and can be installed with a single click, at which point it just works.

For Vim, you have to manually download (and update) the Rust-Analyzer binary, install a third-party plugin, configure them to work together, and hope (1) that the whole thing doesn't break when the plugin or the language server is updated, and (2) that this concoction provides a tiny fraction of the functionality that the official VSCode extension does.


FWIW, I just needed to install the default nvim-lspconfig plugin (it's provided by the Neovim maintainers, and it doesn't do anything besides provide default LSP server configs for a lot of languages to the builtin Neovim LSP client), paste in the keybinds recommended by the README, and call lspconfig.rust_analyzer.setup in init.lua. Configures itself to start whenever rust_analyzer is in PATH. Seems to work well enough! I don't think it's missing any functionality.


I agree with your main point, you have to do quite a few things to configure these plugins and some of it is not straightforward.

However, I program rust using the lunarvim default configuration for vim and it has been very straightforward. I have all features I need to program comfortably and I didn't need to configure anything, the defaults were good enough for me. So that doesn't mean that vim cannot have the same easy of use if there exists some sane default configuration you can just install. I am happy with it and not going to change to vscode or something else.


I'm a vim user, but only because of the keybinds. I use VS code an equal amount because I often get too frustrated trying to wire the disparate vim tools. The never ending fiddling and 30-step process to get the equivalent of one click in vs code is exhausting.

The people who _enjoy_ the toil seem to truly struggle to comprehend that someone might not want to spend hours upon hours learning how to get things working, only to immediately forget.


> The people who _enjoy_ the toil seem to truly struggle to comprehend that someone might not want to spend hours upon hours learning how to get things working, only to immediately forget.

One of the tips in The Pragmatic Programmer is "Achieve Editor Fluency", wherever it's Vim, VS Code, or Sublime Text. I use IDEA for java code because in my job, I browse code more often than I edit it, and IDEA is nice for that. I also use WebStorm for the JS part because it's also good for that. But I invested my time into VIM because I can do everything above with it and even more. I don't want my editor to become an IDE, I want it to be powerful in editing and allow for integration, as there are slews of tools that work with code and text.

You should invest in your tools, be it Vim or VS Code. I chose Vim and Sublime Text because of their speed, and JetBrains' IDEs because of their code analysis engine. You may have different criteria, but try to follow the tip.


I do exactly what you described and indicated that clearly in my post.

What I'm perturbed by are the people who take it to extremes, and are happy to spend hours a week tweaking things, and can't fathom someone else might not enjoy doing the same.


> The people who _enjoy_ the toil seem to truly struggle to comprehend that someone might not want to spend hours upon hours learning how to get things working, only to immediately forget.

It's worse than that, it's a religion. Many of them truly seem to believe they're achieving a higher "hacker rank" or something, while most of it is just tedium and very low level learning.

It's rarely learning huge, game changing concepts. Frequently it's just chasing obscure docs to obscure forums to obscure repos for stuff some PhD student half baked a decade ago on their way to their biochemistry thesis.

Guess what, I work in DevOps, that's just my dayjob, anyway, I don't want to do it as a hobby in Vim, too :-))

And I say this as an "also Vim user". I.e. I use Vim and I've used it for more than a decade, just not exclusively, best tool for the job and all that.


For what it's worth, the 'VSCode-level' functionality in my init.lua has probably required roughly a few hours of maintenance over the ~7 years I've been using Neovim. The LSP setup is just a matter of finding a plugin manager (or not), installing the lspconfig plugin, pasting in the config from the README, and inserting a single line that contains the name of the language server you want to configure.

It can definitely lead you down all sorts of twisty paths if you look at other people's elaborate configs and decide to do that sort of stuff yourself but it's very pleasant/low-maintenance if you stick to the basics (meaning roughly what people do with VSCode). It takes me roughly a few minutes to configure Neovim for a new language :)

(Of course, there's some other stuff in my init.lua that I've put there for fun, like clipboard and window management scripts, but that's not strictly necessary. I've spent a bit more time figuring out the Lua API to write these, but I personally think it's worth it for the extra ability to mold the editor to my needs).


There is a vim plugin for VS code. It gives you vim keybindings. https://marketplace.visualstudio.com/items?itemName=vscodevi...


> No, the main difference is in the quality of plugins, not in how many there are.

I don't think that is true. If you browse the vscode marketplace and search e.g. for python [1] you literally get hundreds of plugins. If you scroll down only a bit, you quickly end up at plugins that only have a few hundred to a few ten downloads. I highly doubt that the quality of those plugins is better than the plugins for (neo)vim.

For your Rust-Analyzer Plugin example: I can install Rust-Analyzer with Mason in a few seconds as well and then (if you have lsp-zero [3] installed) it also just works™.

But I agree, keeping a vim configuration up to date is akin to a hobby (which I by the way enjoy quite bit).

[1] https://marketplace.visualstudio.com/search?term=python&targ... [2] https://github.com/williamboman/mason.nvim [3] https://github.com/VonHeikemen/lsp-zero.nvim


That's just plain untrue. Vim always kept its own rust-analyzer binary and prompted me to update it. I use emacs now and actually have to update it myself


It does not break down.

Chainsaw is very good at doing chainsaw things.

If what you need to do is cut down bunch of trees then chainsaw is exactly what you need. No one in their right minds would start with a knife and start building it into a saw and then attach a motor to motorize it. Mind you we were carving a bowl, but as per Internet argument you completely dismissed the use case and inserted your own.

If VSCode does exactly what you need out of the box exactly how you want it to do it, then you are set and you should use VSCode.


The problem is that Vim can be used to create config files and source code files among other things. VS Code can be used for very much the same things.

The output of both tools is practically the same thing.

The niche of things Vim can do and VS Code can't is tiny and constantly decreasing.


It's always been like this. Vim is an editor, and so is Sublime Text, Emacs, VS Code, Geany, Kate, Notepad++, and more. What sets vim apart is its ubiquity (it's been on every Linux box I touched) and its philosophy of editing text (modal editing). Apart from that, it's a matter of preferences and practicality.


Emacs is a lisp environment, with an editor housecoat on.


You can run Neovim on a remote server through ssh. I think that's the main difference


VSCode can do that with the remote extensions.


Sorry, I meant from the terminal


I can think of a few YouTubers who would and probably have done just what you described. Now that I say that though, I realized you used the phrase "right mind" and I don't think I'd count many if any in that cohort.


Nah vs code is a multitool with both a hook blade (the knife younuse for carving out a bowl) And a chainsaw....

Slightly more unwieldy in that specific narrow use case than a plain hook knife but you don't need a second tool to cut the log you take the wood for the bowl from...

In other words, it's a tool that let's you do near anything with minimal modifications whereas vim is a tool that requires significant modification just to do Any task other than looking at it.




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

Search: