Skip to content(if available)orjump to list(if available)

I miss Vim

I miss Vim

53 comments

·February 1, 2025

riffraff

As someone who still uses vim: no, you don't.

You'd have the exact same situation with various plugins for LSP or whatever (perhaps not the color scheme, but those always existed for vim too).

You're just pining for a time you had less functionality enabled.

diatone

Yep this reads like someone who tricked out their car, blows out the clutch because it has too much horsepower, then starts pining for the days when they didn’t need a double clutch. You never needed a double clutch!

As an aside I’m surprised that people struggle with vendor management and config management for neovim. Like are people picking unstable packages, or is their config wired up in a super brittle way? If you’re gonna invest in your own tooling, surely it’s your job to set it up to be stable over $TIMEFRAME ? Speaking as someone who’s used pretty much the same Neovim config for a few years with maybe half a day messing with it since setting it up

sudomateo

This article put into words what I felt when I decided to stop using Neovim and start using Helix.

It's exhausting fixing broken plugins after an update and wading through the dozens of Lua configuration files to add support for a new language.

I enjoy Neovim's ability to be customized but I very much enjoy the out of the box experience with Helix.

kombine

This is what Helix did right - putting essentials into the core. I'm still not sold on their editing model, even as someone new to modal editing and not encumbered by existing habits. The improvement is not that dramatic to justify abandoning the vim keymaps which you have in every editor. Also, it is missing features like debugger or git integration, so I will stick with Neovim for now. I do like, though, that they are choosing Scheme for extension language. That alone may convince me to switch in the future.

agile-gift0262

I agree. Helix has been the first TUI editor that I have been able to be productive on. With Emacs, vim and neovim, there was so much fiddling just to get started. And the more functionality I added, the slower and bigger the editors became, so I kept going back to the JetBrains suite and vscode.

With Helix, it was love at first sight. I like how discoverable its UI is. I prefer the modal approach of Helix where movement goes first, so that I can see over what what and where my action will take place. I like not having to fiddle with plugins. I like the defaults, meaning my config file fits on my screen and there's still vertical space to spare.

agieocean

Helix is amazing and so portable, I switched entirely off graphical ides to it when I started needing to do dev from multiple machines and couldn't keep my files synced on the dev server with any of the graphical ides and after I tried neovim for a couple weeks and found it difficult to maintain. Now I just mosh to the machine > source my venv when necessary > hx

dsff3f3f3f

I did the same and don't regret it. My Helix config is 4 lines and it does 95% of what I want. The performance of a ton of neovim plugins is also atrocious and I always hated that everything was a hodgepodge mix of C, vimscript and Lua.

agieocean

It's kind of wild, I developed some bash/python to automate saving workspaces and my editor config is still 6 lines

triyambakam

Same here except I'm using Zed.

scarlehoff

I also fell into the neovim pit of plugin horrors. The good news is, you can get out, empty completely your config (or rather, go back to vim) and start from scratch with only what you need.

(I now make sure that my config works equally well in vim and neovim so I don't have to worry about the odd server with only one vim)

user432678

I felt the same around a couple of years ago. One day my giant and fragile config got broken beyond repair — I was using package manager without version pinning, my fault essentially. After spending a few days trying to figure which versions of 30+ plugins should work together and also use the settings I had in init.lua (many plugins just deprecated their own settings), I realised I don’t ever want to spend time on this. Went full opposite — installed Vim, found my vimrc from pre-Neovim era, removed all the plugins and happily using it since then, just stuff vim has out of the box.

dailykoder

I understand your and OP's situation and I got overwhelmed by all the fancy plugins myself. But then I realized: Hey, I can just use neovim like vanilla vim and don't have to get the next best plugin when it comes out.

I think it happened when I tried out Mason, too. And it didn't feel like an improvement. So I scrapped my config and started a new one. With Lazy (because that's actually nice), Telescope and a few LSPs I need/want. That's mostly it. You don't have to get much fancier than that. (obviously including some basic vim settings and keymaps, but that's just like in vanilla vim, but in lua)

bhjfjkfgj

For the last 10 years I have used the same vim config it is about 30 lines.

It does everything I need and nothing more.

Nothing breaks because nothing can break :)

Edit: spelling

lawn

Couldn't you just have used your old vimrc with Neovim?

user432678

Well, technically yes, but I also felt like “oh, I can use GVim/MacVim gui”, “oh I can just use built-in colour scheme Sorbet that looks nice”. And also having vanilla Vim saves me from “oh this one lua plugin seems nice, one plugin won’t hurt”. You are right, I sound like the opposite extreme case of having hundreds of plugins. But that’s how I am right now, enjoying old school Vim, have it easily available on any server/VM I manage and my config is a single 88-lines file.

myaccountonhn

Many people here recommend Helix.

Personally I’m a huge fan of Kakoune if you still want something customizable. I say that because it interops beautifully into the rest of the Unix ecosystem, and is extremely easy to extend. The daemon mode makes it easy to use it together with other tools like lf and tig. Building a fuzzy finder is two lines of code.

With Helix you’re kinda stuck if you need something that isn’t supported.

leiserfg

Félix Is like MacOS, it's good until it's not and then you can't extend it.

hiyer

I echo the author's feelings, though not for the same reasons. The main reason I want to be comfortable if not proficient in vim - and why I use it as my goto editor - is so that I know my way around when I have to login to remote servers. But with my neovim setup now relying on Telescope, Ack, and various other plugins, it takes me a minute to get my bearings when I have to work without them on remote servers.

drio

I can totally relate to this. My approach depends on how often I'll be working on the server. For quick, one-off tasks, I stick with the system's plain vim distribution. However, if it's a machine I'll be accessing frequently, I go ahead and set up neovim with my config files.

The setup process can be tricky, as you mentioned. My config relies on several external dependencies, particularly for LSP servers. I usually ignore the dependency errors initially unless I know I'll need those specific features – then I'll invest the time to fix them properly.

Installing neovim itself can also be challenging, especially on fixed/point release operating systems. I've found using AppImage to be the most reliable solution in these cases.

I'm curious to hear how others handle this balance between convenience and functionality on remote servers.

klooney

I've found solace in Helix. It all works out of the box, and it's fun learning a new and slightly different command language.

Xiol32

I've been enjoying my time with Helix, although I've had to undo some muscle memory associated with vim, and add back commands I missed too much (never letting you go, 'dd').

My major complaint with Helix, and one that will stop me from using it long term, is the (IMO) insane undo behaviour. It always undoes too much and then I get myself into a mess. There's something about undo checkpoints and being able to manually create one, but I don't feel managing that should be my problem.

kerkeslager

Vanilla vim still exists and still works just fine. It's my daily driver, and I haven't touched my .vimrc in probably 2 years.

I still spend a lot of my time learning, I just am not learning how to use my editor any more. Which isn't to say that I know everything about Vim, just that I know enough that further learning in that area has a pretty low ROI.

cess11

I use OG vim mainly because I perceive it as more performant. Maybe my use isn't typical, I don't know, but when I try out nvim every other year or so I usually switch back due to it feeling a bit sluggish. Since version 8 OG vim supposedly has async support, I'm guessing that's why the ALE stuff doesn't seem to lag anymore.

Recently I've tried zed. It was very weird. Installing modules is slick and performance is decent most of the time, but it lags sometimes and doesn't play nice with i3. I'm guessing it somehow sucks in all keypresses and only hands them over to i3 when it has exhausted its own checks and stopped lagging, causing rather harsh interruptions in my workflow where I usually hop immediately from the code to browser, shell or whatever to check on we results.

GuestHNUser

> I use OG vim mainly because I perceive it as more performant.

I feel the same way. I am not sure what performance comparisons have been made between the two projects, but I stick with vanilla vim (gVim typically) over vanilla nvim due to the responsiveness.

petepete

I'd be really surprised if there's much difference at all in speed/responsiveness if you run them without plugins.

endorphine

The point is moot, since you can use your vim config as is, with nvim. I did exactly that, so the only change needed was to actually alias 'vim' to 'nvim' in my bash_profile.

So I guess this post complaints about the way the author chose to configure nvim.

bastardoperator

Spot on, this just sounds like complaining for the sake of complaining. Use vim if that's your preference. I used vim for over a decade, and switching to nvim was a breath of fresh air.

laktak

neovim does not support running external programs that have an UI with `!`

So, no.

ablob

I am confused. I tried it with glxgears and it appears to work. It even prints its output (and reading it into the buffer works as well). So what do you mean when you say that it does not support running external programs with a UI?

laktak

I meant a text UI, something like lf or ranger that displays a TUI. The nvim terminal does not work 100% for that use case.

In vim I can just run lf to select a file and then return to vim.

kbrkbr

How come I can run

!evince filename.pdf

when editing latex files in nvim after compiling?

And, but that does not defeat your point, :term shoots up a terminal in both under Linux.

lawn

Yes it does, just not interactively.

Zizizizz

https://github.com/nvim-lua/kickstart.nvim single file config in lua with the essentials. Some of the article still rings true though.

billfruit

While Emacs(I'm speaking of emacs here because that's what I use, but it should apply largely to Vi as well) is very configurable and extensible, I wish something was there that is more "batteries included" than them.

Recently I tried to use Emacs on a windows machine, and found that grep-find wouldn't work because it actually depends on an external grep program.

The same with modern context and language and project aware auto-completion, it's not bundled in, and you need external components like LSPs to work.

iLemming

Well, you either have "pre-assembled" hamburger, or freedom to cook your own. Imagine going to McDonalds and asking them to let you into their kitchen to customize your burger from scratch, choose specific ingredients, adjust cooking temperatures, and rearrange their workflow to match your preferences.

Asking Emacs to be "batteries included" misses its fundamental nature - it's not a fast-food IDE, it's your own personal kitchen for crafting exactly the development environment you want.

Even starter kits - Doom, Prelude, Spacemacs, etc. - are not really "ready-made" products; they're more like recipe books, where you have the freedom to choose and pick from, but they still don't liberate you from having to learn how to "cook things." They don't "magically" solve things for you.

billfruit

Yes, but is there any argument to not to have intelligent automatic code completion out of the box, as a user today.

iLemming

In the context of Emacs, absolutely. I, for one, love the fact that the completions aren't an opinionated set of rules, and anyone can configure them to their liking. Why would I let anyone upstream dictate how those rules should apply, on my computer, in my editor? For example, when working in a Clojure codebase, I don't want to blindly rely on CIDER completions because they work only when you have a connected REPL. I want to leverage LSP completions (if it's connected), and I also want completions for my code snippets, filenames, keywords specific to the language, words in comments, etc.

If tomorrow I wanted to use different rules, applying them dynamically based on some conditions - Emacs provides ways to achieve that.

So yes, for completions specifically, I don't want them to be rigidly embedded in the core of Emacs. I prefer this feature to be an extension. Interestingly, Emacs is so versatile that some extensions are built so well that sometimes you completely forget they are not built-in features or an afterthought; they feel as if the editor was specifically designed to have them.

brianstrimp

That's the unix philosophy of using one tool for one thing, that does it well. The advantage is that it really opens a marketplace which means you are not tied to one solution if that solution turns out to suck. An alternative will quickly pop up, you switch, everybody does that, and in no time the bad piece has been worked around and replaced. This works against the "batteries included" philosophy but avoids being stuck for a long time with sub-par components.

Over time, when things stabilize, that approach can change. But nvim is still very much a moving target.

Python tries a middle ground. An http server is included, sime crypto libs are as well, but if you need something specialized you can still install alternative modules. That model seems to work well.

jampekka

> I wish something was there that is more "batteries included" than them.

There are e.g. Spacemacs and Doom emacs that don't only include batteries, but supercritical nuclear reactors about to explode at any moment. :)