Hacker News new | ask | show | jobs
by altonas 1075 days ago
LazyVim got me back into vim. After years of custom configs and/or heavily editing lunarvim and nvChad I was getting a bit burnt out but decided to give lazyVim a try, and I was absolutely blown away. For the first time a vim setup actually felt like a real IDE. It took about 60 seconds to go from having lazyvim installed to having a fully functional IDE that I could use at work in a real environment. That's the same amount of effort it would have taken me to set up a fresh install of vs code with whatever plug-ins I wanted.

If you've ever been put off by the complexity and setup of nvChad or lunarVim, then I highly suggest giving lazyvim (or astrovim, its similar but with more "batteries included") a try

4 comments

I don't buy it. I have so many custom little quirks that no ammount of integrated out of the box setup is gonna replace it in 60s. Thats unrealistic. I believe its good, but it must be for certain class of working habits (for example, its probably great for those people that use vanilla anything, including vim).
That's the thing, I absolutely don't want to do a bunch of tiny tweaks. I want to write (react) code. For me personally I feel like tweaking an IDE gets in the way of that. Yet I can take a clean install of lazyvim, use mason to install the react language server, and install copilot, and then I can immediately start working.

And so that's what I actually do, and I find that to be much more pleasant (and lightweight) than other IDEs like VS code.

Then you musta accept suboptimal UX. Its one way to live your life.
Can you actually explain how it's suboptimal UX, and what I could be doing better. I want a simple IDE, not suboptimal bloat. I don't need 200 keybinds to make a vue component.

Just because you have a bunch of custom quirks doesn't mean that I do.

The thing about vim and emacs is that both of them, out of the box, suck. BUT, what they both offer better than anything else, is the ability to gradually modify them to match what your brain needs.

I 100% agree with your hyperbolic "200 keybinds to make a view component" But that's ...that's not how it works unless that's what your brain wants.

With ALL editors you eventually encounter "ugh, this is frustrating" or "i wish i didn't have to do that" and then you have 30+ years of plugins and configs you can draw on to modify it to match your liking without any coding. VERY rarely, you'll want to tweak it in a way that there isn't a plugin / config for and you'll find communities of very helpful people who'll respond with "what about this solution..."

The fact is that _your_ brain is different from everyone else's. The less configurable an editor is the less it will be able to support the way your brain likes to work.

You _can_ accept pre-made defaults like those provided by VSCode OR you can gradually refine your editor to be a perfectly crafted tool for your particular and very individual way of thinking.

I choose the latter because i spend SO much time staring at my editor and trying to convince it to do things that are almost always better with automated assistance from it.

> You _can_ accept pre-made defaults

In my case, I'd prefer to do so. I'm a different use-case though, I'm a server admin so I want to be as comfortable with bare-bones defaults as possible so that I can jump on any server and just use Vim (or sometime just vi!). I can't afford the time it would take to set up a custom config on every server in every environment, so the most I need is a basic .vimrc that has `set number` and a couple netrw tweaks that I can copy with scp and get going. Most of the time I don't even copy that over and run `:set number` when I open a file.

Note that I'm still an intermediate Vim user at best, splits and markers are the most complex features I use (no macros yet). I know I can edit remote files, so maybe once I'm comfortable with that then I can set up some real customization in each environment.

Nonsense. I've been using Vim for 15 years and I don't have any special keybindings. It absolutely does not "suck out of the box".
Exactly. You absolutely need maximum configurability for the most important tools in your arsenal. You can pass with defaults on less used tools but everyday stuff should be as efficient as possible. In my case those tools are editor, shell, browser, OS, media player - they are customized extensivelly.
Any time somebody else creates something instead of you, it must be accepted as suboptimal. We are all unique human beeings and have different kinds of habits and disfunctions, levels of knowledge etc. so 1 setup for all is pretty much impossible and nobody else can do it but you. Any time you accept that, you are accepting suboptimal UX. If you are doing so you are admiting that you are either lazy, or you are good with your potential being maxed out at that point (if you are accepting anything less then most efficent workflow, given that time is the most precious resource).

Actually, when I look at how most of my colegues are slow using their tools of choice, even senior ones, I imagine I would rather kill myself then using such setup.

On the flip side, I've been using VIM/emacs for over a dozen years, and have gone from extensive user made configs to these starter packs (DOOM Emacs with some custom stuff on top). I mean I'm happy with a well thought out "total conversion" of emacs. I learn the UX on top (that is really nice) and I add my own. If I started from scratch it would probably be sub-optimal ( I mean I could recreate DOOM, but why?)
Or rather it's a matter of trade-offs and some things are just "good enough". It's not up to you what's good enough for him or me, especially weighed against the amount of effort I might have to invest to get something that's "optimal" for me.
Cant wait until you create your programming language to use in the company you created racking up the optimal millions while laughing at us lazy slobs!
Just because it’s predefined doesn’t mean it’s suboptimal. On the contrary - anything I do myself likely has less about of thought and consideration from an officially published configuration.
That is just not true. Anything not customized to your specific need and context is certainly more complex and bloated. "Officially published" is a common falacy (resorting to authority)
Agreed. Back then, I tried to get into neovim with packer and a ton of plugins, then tried AstroVim and stuff broke all the time. Went back to vscode.

I tried it again about half a year ago with a much leaner, custom lazy (plugin manager, not LazyVim) setup, and now it's my main IDE for everything except C++ (clangd sucks, sorry)

It took me less than a day to get a decent config, and now I rarely touch it (occasionally there may be a nice plugin to throw in). Config is about 2-300 lines, with LSP (rust, typescript), harpoon, oil.nvim telescope, etc. Works great.

I had the same issues with AstroVim when it was first coming together. Looks like the creator was rapidly iterating to try and make it easier to configure.

It’s now in a stable enough state that I haven’t had any issues.

What do you use for C++? I was planning to integrate clangd into my setup soon.
I've had a good experience with ccls, although to be honest I haven't really compared it with clangd so I can't say if it is actually any better!
I use 10x editor, Rider/Clion
The last version [0] of nvChad uses also lazy.nvim under the hood. I am not sure how this could help in your case.

[0] https://github.com/NvChad/NvChad/releases/tag/v2.0

That's interesting to me since I've been using close-to-vanilla lunarvim for the past year and it's been great. I'm just not into customizing my editor much, and only touch my config when I'm annoyed by something. This seems to be your goal as well. Can I ask then what makes lazyvim easier or quicker to set up how you want?
I found lunarvim to just not work that well for web development out of the box (if I tried doing anything past vanilla JS), and I have no interest in learning about lunarvim specific things like the lvim global object to be able to tweak it.
100% and I dislike having two vim configurations to maintain which is why they also have https://github.com/LunarVim/nvim-basic-ide

With LazyVim I basically got rid of the both, and now my vim config is literally a few overrides https://www.lazyvim.org/configuration/general that are not distribution specific at all.

lazyvim is the package/plugin manager and LazyVim is the distro
Correction: lazy.nvim is the package/plugin manager