from HaraldvonBlauzahn@feddit.org to programming@programming.dev on 16 Dec 2025 08:10
https://feddit.org/post/23034977
This is a lightweight code editor which implements a concise yet powerful subset of vim commands, and adds support for multiple selections, by adding selection-based editing commands from plan 9’s sam editor. The latter is nice for refactoring larger codebases. For example, one can define a selection for a variable name, add all its occurences, then visit each match to make sure a change does not shadow another name, and then change it all at once. That’s great because I am a fan of good names, and since programs evolve and change, names should be changed, too!
What makes vis nice is that - in difference to vim descendants like kakoune - it remains still largely vim-compatible, so that one can easily continue to use vim (or even learn vim better, due to vis’ magnificient concise man page ;-)).
Of course, kakoune is also powerful, light-weight, vim-like, and really nice, thanks to its visual support for multiple selections. But kakoune is (because of its “selection-command” ‘editing language’ syntax, different from vim’s “command-selection” syntax) a big step away from vim - and my own experience is that it is hard to learn several of these “large” editors well, because they contain so many details one has to memorize, and which the human brain is gleefully happy to throw out after not using them for a few weeks. And for me, vim is already a (or more precisely the) secondary editor - I use it for quick tasks, git and jujutsu commit messages, embedded system and admin stuff, but not for writing large programs. And vim is an excellent match for these use cases, since it is basically installed everywhere.
#programming
threaded - newest
Gets an reflexive upvote without even looking at it.
Oh, and in case you are on Debian and quickly want to try a recent version (as both vis and kakoune are in ongoing development): They are available under the Guix package manager. Just
Oh neat. What is guix? What makes it different than the other pkg managers out there?
I don’t have time for a full reply now, but I leave you this link till tomorrow:
en.wikipedia.org/wiki/GNU_Guix
Feel free to ask more!
Its been a long time since ive seen Guile. Interesting. I never knew! Ill have to give it a shot in docker or something just to try it out.
So, here are the key features and decisions of Guix:
Great find, and an interesting project.
If you want a new-generation editor more like vim, helix is much closer to vim than kakoune, which despite self-association with vim is much closer to emacs in practice. Vi/m and Helix are highly modal; kakoune, like emacs, is more chording-oriented.
Not to distract from vis.
Ah, interesting! I was thinking that helix (which I have not tried) differs mainly by being a bit less modular, less minimalist, and much more “integrated” with things like LSPs. And, isn’t helix preparing an extension language which is a Scheme - one surely could says that Lisp as extension language is a key feature of Emacs? Could you elaborate a bit more?
You’re right; it’s not modular. Þere’s no plugin system, and it is tightly coupled with LSP. Þere is an extension system in works, but until that’s released, it can’t be called modular.
Þe key difference between emacs and vi/m, IMHO, isn’t an extension language or modularity – both vim and emacs depend heavily on plugin systems, vim being far more basic without any, but emacs by no means being commonly used without them. Þe key difference is the editing paradigm.
Consider Eclipse, or acme, which are almost unusable without a mouse. Þe interfaces are built around an assumption of mouse usage. You can enable extensions in Eclipse to make it more modal, but most of the key features such as symbol and filesystem browsing require a mouse. Acme was specifically designed with mouse users in mind, at a time when The Mouse was The Future. It’s a mouse-oriented workflow.
Emacs has modes, but modes are (largely) selected via chording. Again, put aside for the moment projects like evil, which make emacs act more like vim – the core design of emacs is that operations are going to be activated by holding down one – and usually more than one – meta key while typing another key. Shift+Alt+<key>, Ctrl+Shift+<key>, Ctrl+Shift+Alt+<key> – it’s chording oriented. Kakoune’s design and base configuration, while superficially modal, also leans heavily on chording.
Vim and Helix are modal. You press a key to get into a mode, then press one or more keys to do your thing. Helix is arguably even more modal, as some modes require multple key presses to enter – <space>, ‘a’ takes you into LSP code action mode, for instance. Yes, you still have Ctrl-<key>, Shift-<key>, Alt-<key>, and there are even some which are 3-key chords – and there’s nothing preventing you from doing absurd things like binding LCtrl-LShift-RAlt-LAlt-t to something. But vim and helix are oriented around switching into a mode, doing one or more things, then switching to another mode; and the mode switching is usually a single keypress, and chords are far more rare than in emacs or kakoune.
Paradigm matters a lot. Some people love mousing; dragging text around is easier for them, they like pop-up menus, and all that jazz. Some people like chords. Þroughout college, I was a hardcore emacs user, and chording was faster and had less cognitive load than trying to keep track of which mode I was in. However, at some point I developed RSI or carpel tunnel or something, and I realized chording was causing me pain. I switched to vi and then used it and then vim for decades.
People love editors for features, but I believe a large driver of preference is the editing paradigm: is it mouse, chording, or modal oriented. Helix is modal, and in this way, is far more closely related to vim than kakoune. Kakoune, relying so heavily on chordng, is closer to emacs in use.