Vim Classic
61 points by datboi
61 points by datboi
Oh hey, thanks for reminding me that I should switch to Vim-Classic. I'm still on vim 9.1, which (as I understand it) is the last major release before the ensloppificator landed, but I should move in case the infection spreads to backports.
Yeah I am wanting to switch. I'm currently on neovim and I really like built in lsp client, treesitter integration, and now native package manager... I wonder if maybe I should just simplify the stuff I'm using anyway.
I've been considering emacs, though it's annoying having to redo my entire config.
I've thought about trying doom emacs or spacemacs a few times, due to their more off the shelf "evil" mode (vim emulation), but I've been using vim for so long, even that seems like it would be a painful amount of effort.
vim-classic seems like the easy-road escape hatch.
I'm not really a fan of those all in one config setups that download everything for you (astro on the neovim side iirc?), mostly because it sounds like a supply chain nightmare.
I find it frustrating that vim classic chose v8 because v9 brought vim9script and with in yeggapan's lsp plugin that requires vim9script.
if you consider something as alien (to a vim user), then why not helix or kakoune?
I have considered them! Neither has a clear stance on LLM generated code: https://github.com/helix-editor/helix/discussions/15408 and https://discuss.kakoune.com/t/ai-contribs/2850/15
I feel like Kakoune probably doesn't, but I'd prefer a project that takes a stance against them.
When I decided to use Vim Classic, I had already tried, and rejected, Helix. If it hasn't changed since then, Helix is completely incapable of find and replace. Of course, you can do a mass regex select, and then a replace, but this is an unsuitable alternative, for two reasons. When two selections butt up against each other in Helix, they merge into a single selection. So if two things you want to replace happen to be adjoined, they'll be replaced with a single thing. The other issue is that you can't use regex capture variables in your replacements.
I also considered Vis, but I likewise rejected it, though I don't recall why. I've heard of Kakoune but never tried it.
The cumbersome find & replace is the main reason I gave up Helix, too. The "/\v" (or ":s/\v") operators in Vim are too powerful to be given up for a slightly better user interface.
You can emulate regex capture variables by copying the selection, then pasting it; this works as long as the cursors stay separate. The biggest frustration I run into when doing this is that find-and-replace in many editors is a little 'smart' with respect to capitalization (so foo -> bar changes Foo -> Bar, FOO -> BAR), but you can't do that with multi-cursor.
I've been enjoying vis lately. It's like vi, just as snappy, except not annoying, has syntax highlighting, and a super interesting way to address what commands should affect based on the ACME/sam editor.
just as snappy
I'd even say it can be much snappier than Vim! Maybe it had something to do with the plugins I was using or my config, but Vim was extremely sluggish when I tried reading a large raw database dump. Vis handled it just fine for the most part, only becoming unresponsive on searches and such (which is understandable on a multi-GB file).
The way it does multiple cursors is pretty good too; I quickly found myself trying to use them even in Vim.
My main annoyance when switching over from Vim was that it (sometimes?) positions the cursor differently after switching modes than Vim would, which trips up my muscle memory. I've mostly adjusted to it by now, but I still feel slightly awkward navigating in it.
I'd even say it can be much snappier than Vim!
That's why I specified vi :p Whenever I had to edit ~gigabytes sized text, Vim (especially Neovim...) choked and froze, but Vi in its lovely simplicity remained responsive. However, it's also a pain to use, so I'm super happy Vis brings the best of both worlds. (Though I suppose the rest of my comparison works a lot better with Vim, so mea half-culpa.)
it (sometimes?) positions the cursor differently after switching modes
Yeah, escape not moving the cursor did surprise me at first too, but with an unbiased eye, imo it's a lot more logical.
Ha! "semi-culpa" (a dictionary says that "dimidia" could also be used but the "semi-" prefix seems more frequent).
What are the AI contributions to Vim that people have problems with? The word slop has been used here, is there a feature that was buggy or something?
As I understand it, there’s no specific patch or regression. It is a philosophical opposition to the use of AI to develop the software.
From the project homepage:
Vim Classic is a fork of Vim 8.x for long-term maintenance, providing a stable, dependable editor — maintained entirely by humans.
Emphasis mine.
Slop refers to the output of LLMs. No need to define it narrowly in a way that legitimizes certain uses of the technology.
No. Slop refers to the quality of the outup, be it by humans or LLM. The term predates LLM.
Wrong. Words change meaning. "Computer" used to be a job description, "compilers" worked at publishers of dictionaries, "file" was a cardboard object used to contain pieces of paper, etc.
"Slop" now means material emitted by LLMs. The quality of the material is irrelevant.
Oh weird it usually flags it if it has been posted before. Sorry!
No worries, I was just linking to past discussion in case someone wanted to have a look at it.
I think the reason why it didn't get flagged because they're two different links - your post links to the website, whereas the previous post linked to the source code on Sourcehut.
Does Vim Classic accept patches for features dropped in Vim 9.0 like Mac Carbon, Athena and neXTaw?
I switched from Neovim to Vim Classic, unfortunately I don't have my old old vimrc, so I need to relearn how to configure Vim for my own needs and preferences.
Vim includes a solid starter .vimrc file. From my reading of the help docs, it is intended for users to start with that rather than from a blank file.
I discovered this recently on a flight with no internet I decided to run through :Tutor and it turned out Neovim doesn’t have the tutor (even though it is referenced in Neovim’s :help). I opened up regular vim to go through the tutor and didn’t have vimrc but found references to the starter vimrc that was unknown to me.
It probably varies a lot. My .vimrc is 77 non-whitespace lines. A chunk of that is because I configure ALE to use different versions of clang-format and clang-tidy for different projects in there (and I share it across machines, so it has some checks to see which one it's on and then use the correct paths for the tools depending on that). It also has around ten lines of 'I tried NeoVim and wanted my config to work with it' changes that I should probably rip out since I'm never going back to NeoVim.
So a 'make vim minimally nice for the things I care about the most' .vimrc is probably around 20 lines (source $VIMRUNTIME/vimrc_example.vim is the first one, currently sitting in a if !has("nvim") guard). Probably a good 80% of what I want comes from there.
But I've seen other folks who do a lot more customisation of their editor than me. They have hundreds, if not thousands, of lines of config and actually care about them. For anyone in this situation, moving configs to a different editor, even a similar one, is a lot of work.
When I wonder about the differences between various vi, vim classic, and other vi and vim, I think I understand how some people feel when they wonder about the differences between NetBSD, OpenBSD and FreeBSD.
I still use vi that comes with NetBSD, and when I do use vim, I want to make sure that I'm not getting the enshittified version, so the "maintained entirely by humans" bit is quite helpful.