So apparently there are two editors inspired by vim, but built from the ground up (as opposed to neovim, a vim fork that seeks to improve on top of vim).
I’ve heard of Helix several times prior, but it never quite attracted me. Seemed like vim, but different key bindings and much worse plugin system. It also has different visual and normal modes than vim, but it didn’t quite click with me. I do like it’s multi-cursor ability though.
Then it turns out that Helix was also inspired by not just vim, but also kakoune. Kakoune also has different keybindings, and different modes, but its different modes make sense to me. It fuses visual and normal mode into one. Your normal mode is for both navigation and selection.
Kakoune promotes the idea that you should visually see the text you’re operating on before running the command. You know how in vim, “dd” deletes a line, “dw” deletes a word, and “d$” deletes to the end of the line? In vim, you don’t see what you’re deleting before its gone (which is fine and works for many). In kakoune, the selection happens first before the action. So you select the word or the line, and then you delete.
But what I found to be Kakoune’s killer feature was its shell integration. Kakoune seemlessly integrates into the unix shell, allowing you to offload many tasks to it. For example, instead of it having a built-in sort command, you use the unix sort command to sort your lines.
I’m surprised kakoune isn’t more popular. Yes, it is still in a much earlier phase than vim, and the ecosystem is far less mature, but I am surprised to see Helix gaining more traction.
I’m still very new to kakoune and exploring it. But I like it a lot so far.
Helix IMO has one huge benifit over Kakoune - inbuilt LSP and treesitter support and sane defaults. It takes the best bits of kakoune and neovim and improves on them both. This gives me an editor with enough IDE like support that I can use it for just about anything. All with only a few lines of config and zero plugins.
This means I don’t need to spend ages trying to configure my editor to work with various languages or working around its archaic defaults. I can just install it, optionally tweak some minor settings (like the theme and turning off auto bracers), install the LSP servers for the languages I need and I can get to coding.
And after years of fiddling with neovim/vim to get it to it behave in a reasonable, but not perfect, manor helix is a breath of free air. I did try kakoune for a very short time after getting pissed off with neovims configuration and plugins, but gave up on it quickly when I had to dive into getting more plugins configured for even basic things like LSP support (though this was years ago, back when helix was not in a daily usable state either).
Yeah, it would be nice to have plugins in helix (and they will come one day), but IMO the saner defaults and unbuilt support for most of what I used plugins for before is far nicer than getting support for the few bits that might be missing.
Kakoune promotes the idea that you should visually see the text you’re operating on before running the command.
This is what helix does as well, and it shares kakounes keybindings and input system. So it is more similar to kakoune in that regard than vim with different keybindings. Really it is more of a kakoune clone, with inbuilt support for LSP and treesitter like neovim.
For example, instead of it having a built-in sort command, you use the unix sort command to sort your lines.
You can do this in vim and helix as well. Both can run external commands, pipe your open file to external commands or just your current selection to them. I use the unix sort in helix to sort lines all the time.
That’s a fair argument, thanks for showing me the other perspective!
Imho, I prefer an editor that focuses on doing editing right, and provides the interface and APIs for integration with other things. I get the appeal of built-in LSP working OOTB, but I prefer this gets done by distributing the a good editor pre-packaged with LSP and other plugins, sort of like how you get lunarvim or nvchad as neovim with config and plugins ready. This way you get LSP out of the box, but others can customize if they need.
helix […] shares kakounes keybindings and input system
I get that it is inspired from it, but it felt like a strange in-between to me. It still has 3 modes, and the two non-insert modes seemed not to have a well-defined boundary. It didn’t just click with me. Kakoune seems to do it much better imho.
You can do this [shell integration] in vim and helix as well
I know vim has some basic she’ll integration, but it is not the same as Kakoune’s, unless I missed those features in vim and helix. I don’t wanna duplicate things, so I recommend you read the shell section of this page: https://kakoune.org/why-kakoune/why-kakoune.html
Exactly this. I was an Emacs user for over a decade but was so frustrated with having to maintain my setup, and different plugins not cleanly cooperating etc. Not to mention the fact that some plugins liked to block the entire UI.
I switched to Helix precisely because of the sane defaults and integrated LSP. It meant I could just install the AppImage and get going, searching the docs for default keybindings whenever I got stuck, etc.
High customizability and extensibility can be a double edged sword.
I started with EMACS, switched to vi(m) after a few years, and used that for many years before switching to kakoune. I used that for a year or so before switching to helix.
The main difference to me is that kakoune is very chording-heavy. Despite being modal, it feels more like emacs than vi. Helix is much less dependent on chording, and is consequently much better for my RSI than kakoune.
Helix is younger. It has no plug-in system, and is missing some key binding ability, like binding key sequences to user macros. Despite this, it feels more comfortable, and the depth of the integration of the LSP system makes it perfectly usable as a lightweight IDE.
Do you mean keybindings? I can see that some keybindings are more chording-heavy. I think default keybindings, while nice, should be secondary, as they can be remapped.
Yup!
Yes, the default bindings can be remapped, but Helix’s bindings rely less on chording OOB. In both of these projects, the defaults are important, as they are unstable and both frequently break backwards-compatability.
I’m not sure you could easily configure Kakoune to work like Helix. For instance, many of those chorded are modes in Helix. For example, word selection in kak is (IIRC) Alt-Shift-W. In Helix, it’s “m”, then “s” , then “w”. Each key press gets you into a multiple-choice selection mode, and they can be pressed as fast or slow in sequence as you like, and none involves also holding another key whilst pressing it. It’s truly modal, whereas kak’s modality is mostly confined to “insert” or “command” mode.
Helix has prompts for sub-modes, so the infrequently used functions that never become part of muscle memory are still accessible without digging into a readme.
A lot of people like chording. For me, it makes my hands hurt, and I find it requires a lot more memorization of key combinations. I found it much more vim-like, which floats my boat.
To each their own.
and much worse plugin system.
Correction, It currently doesn’t have a plug-in system.
Is there something wrong with me because I haven’t felt the need to use anything but pico since I started linuxing in the late 90s?
Maybe you don’t have a short attention span 🤣 The only reason I use Kakoune is because I completely lose my train of thought if I can’t get an edit done quick enough.
My ADHD is severe and all encompassing! I have a tendency to over complicate everything, and pico doesn’t really let me do that.
Nothing wrong, if don’t spend daily hours editing text (or code).
I don’t! I’m occasionally in config files for this or that. I’m a simple man with simple needs.
Meow mode in emacs uses the same philosophy which is pretty decent.
I’ve wanted to try emacs but have been afraid to do so. I like that emacs basically replaces your terminal and just has a semi-OS inside. But I heard the performance is lacking. What do you think?
I’ve been using emacs with evil for a while and performance is fine when running it in client-server mode. Vim might be faster opening files on my computer, but if I had as many plugins for vim as I have for emacs, it would likely be as slow, and it’s client-server mode wasn’t as good when I switched.
Another (new) Emacs user here, I managed to reduce Emacs startup time to 0.6s - 0.5s on my garbage hardware. Some Emacs users have even manages to reduce the startup time to 0.3 - 0.2 seconds!
Also, launching Emacs in --daemon mode makes creating new frames instantanous and because of it you won’t experience any form of lag when using Emacs!
Yeah performance isn’t that great, its single threaded so if a task is taking a while all of emacs is frozen. It usually isn’t terrible though and is better than VS Code, and the text editing part is faster than VS Code on large text files anyways.
neither has persistent undo yet, so i’m staying with vim for now
For those who have tried Kakoune, once you’ve included things like Treesitter and the clangd language server, which one feels faster, Kakoune or Neovim?
I’m still a Neovim main but one thing that I find interesting in Kakoune is their “client/server architecture” which apparently allows you to have one master Kakoune instance and multiple slave instances that would be in sync, kind of like how you can have multiple windows in any modern IDE (I’m not sure if Kakoune shares the clipboard with all of those instances?). That thing is still not available in Neovim (or Vim for that matter), which is a pain in multi-screen setups.
Long-ish time Kakoune user here.
For those who have tried Kakoune, once you’ve included things like Treesitter and the clangd language server, which one feels faster, Kakoune or Neovim?
I never felt the need to install something like Treesitter because I feel selection-based editing is already powerful enough, if that gives you an idea of how much faster I am with Kakoune compared to Neovim. Maybe I just don’t know everything Treesitter can do 🤔
which apparently allows you to have one master Kakoune instance and multiple slave instances that would be in sync
It’s not a master/slave setup, it really is client/server, even the first instance of kakoune that you open will be a client that you can close without the other instances going down with it.
I’m not sure if Kakoune shares the clipboard with all of those instances?
Yup, all shared: registers, buffers, marks, hooks. (You can choose not to share stuff between clients)
To complement your answer, usually people want tree-sitter not only for smart selections, but because of syntax highlighting.
Kakoune has the best of both worlds: https://github.com/kak-lsp/kak-lsp supports semantic highlights from LSP servers, but we also have projects like https://github.com/phaazon/kak-tree-sitter in case you want highlighting from tree-sitter.
deleted by creator
☝️ 🤓 If by master/slave you mean “A system in which the master node is responsible to do everything a slave does plus coordinate slaves”
and by client/server you mean “A system in which a server is responsible only for coordinating clients”.
I don’t think so, because the first window is not special, it just spawns a server if none is assigned.
I haven’t tried this yet, so I can’t answer on Kakoune, but it was something that bothered me in neovim. I use a tiling window manager, and like having the editor tiles be managed by the tiling app. I’ll try that out sometime
I just tried it right now, you create a session when opening your file the first time
kak file.cpp -s name_of_your_session
, and then on the other windows you connect to that session withkak -c name_of_your_session
. It really works, they share the same buffer and copy-pasting works just fine.
The road blocks I encountered on Kak are, copy paste from other applications, remembering the mode I’m in (like the other modal editors), the language for config and plugins, removing clippy. Finally I was back on Howl but I admit, Kakoune was mind-blowing.
The “joe” editor. It’s default mode is to emulate WordStar. It can also emulate pico, and emacs. Loved this editor before learning, and even for a while after, learning vi/vim.
I like micro, it’s a text editor, nothing less, nothing much and while I can’t see myself doing any actual programming on it, it’s nice for editing configs and simple scripts