It looks very interesting and I'd love to support it, but editors that must be modal are difficult for me to use, personally. Editors that are not modal can be made modal, but can modal editors be made non-modal?
Have you ever used a modal editor? It takes the smallest bit of brain training to adapt, but feels more logical for long form coding. I spend a lot more time reading code than writing. Having more tools to grep/highlight/move text in one mode is quite productive.
I went from vim to emacs and used that for a few years, then moved to VS Code for the next 10 years or so. It's showing its age a bit lately, so I'm sure I'll try another one soon, which is why I looked at Helix. But I'm very glad there are very different editors for very different types of minds, just like how there are different ways to indent/format code. Programmers do not have one-size-fits-all minds, and we shouldn't design anything assuming they do/should. (Looking at you, Golang.)
For some reason Emacs veterans keep waging wars against modality without acknowledging that Emacs is inherently modal - key chords create temporary modes, transient keymaps maintain states, the minibuffer is a distinct mode, and even fundamental concepts like the mark-active state and recursive editing demonstrate that Emacs has always embraced context-dependent behavior rather than being truly modeless.
Oh, wow. I really enjoy modal editors, especially the Kakoune model seen in Helix and meow-mode for Emacs but I could never put it into words why I actually preferred them.
Modal editors can be (in principle) made non-modal by changing keybinds to combos that change modes behind your back, so you'll keep insert mode as your primary one. So strictly speaking, non-modal editors are the ones that force you into only one style
But not sure real editors are as capable since some can have adverse actions on mode changes (e.g. resetting your selection or changing undo stack etc)
Yup, I know what you're talking about. Evil-mode in Emacs actually adds so many nice features and simplifies so many things outside of text editing, yet I've never seen anyone who dislikes modal editing actually install evil-mode and keep it disabled by default. Them Emacs veteran "nevervimmers" are missing out.
In fact, I have a hard time editing in web browser textareas and Google Docs because of the muscle memory of vimlike keybindings and how I've associated them with tactile keyboards. (Smartphones and tablets don't give me this problem since they feel different, but laptop/desktop Google Docs editing throws me for a loop.)
Once you learn, modal is the way to go. It feels like playing a piano over an AST. It's so elegant for code and syntax trees.
I've been using vim keybindings in vim and vimlikes (JetBrains IDEs and VS Code) for nearly twenty years now. I learned most of it within just my first three months and have picked up additional surface area every year. I would still call myself a novice relative to vim masters, but you can get a ton of value from the basic movements and chords and occasional macros. All that to say, the learning curve might look steep, but it's shallower than you think and certainly well worth it.
The only reason I'd see non-modal being useful in a modal editor is as a crunch to learn and make the onboarding smoother. But you'd probably still want the first steps to be modal anyway, so I'm not sure it would provide much value.
Just jump in. It feels weird and slow at first, but let it grow on you. It pays dividends.
I think it really does come down to taste. I learned how to do modal text editing. I believe it is a fine and efficient way to edit. So is non-modal. So is mouse editing. I still prefer the emacs way of doing things
Emacs was always modal. Emacs is inherently a modal text editor - keychords are modal, transients are modal, isearch is modal, repeat-mode is modality. The only thing the idea of vim-navigation brings on top of all that is a simple, structured and memorable language/grammar to deal with modality, that's all what it is.
Both approaches are modal; Vi just codified its modality into a more learnable, linguistic system while Emacs distributed its modality across context-sensitive mini-languages.
Emacs has this same power scattered throughout - the kill-ring, rectangle operations, keyboard macros - but Vi's genius was packaging it into a coherent, immediately graspable system that feels less like using a computer and more like speaking a concise language about text.
The best thing about learning that language is that you can apply it anywhere where keyboard input is still relevant - your browser, your terminal, your entire system - e.g. you can control your music, jump between apps, navigate between windows, etc. using only the home row keys.
> The best thing about learning that language is that you can apply it anywhere where keyboard input is still relevant - your browser, your terminal, your entire system - e.g. you can control your music, jump between apps, navigate between windows, etc. using only the home row keys.
I guess maybe with some configuration? A lot of emacs keybindings work out of the box in most text boxes I can think of, including this one I'm typing into right now.
If the justification about VI is that it's more learnable, then that's hardly a reason for me to switch - I've already learned emacs.
Although I do think it's a stretch to call it "immediately graspable"
> that's hardly a reason for me to switch - I've already learned emacs.
Most people think of keyboard input as a linear, one-dimensional approach to text editing, that's what you're doing here. Vim-style navigation offers something fundamentally different - a spatial "language" that maps directly to how we conceptualize our workspace.
- C-x 4 becomes a prefix for file operations in other windows
The logic breaks down quickly. There's no consistent mental model connecting these commands. C-x 4 abandons the splitting metaphor entirely, becoming a namespace for "other window" operations rather than a window count.
Doom Emacs's vim-inspired approach creates a coherent spatial language:
- SPC w s - split
- SPC w v - vertical split
- SPC w h/j/k/l - jump left/down/up/right
The hjkl directional keys mirror vim's movement commands, creating a consistent spatial metaphor. Your fingers learn to "think" in terms of physical direction rather than arbitrary key combinations.
This spatial approach transforms window management from memorizing disconnected shortcuts into developing spatial intuition. Instead of thinking "what was that split command again?", you think "I want to move right" and your fingers naturally press 'h'. The keybindings become an extension of spatial reasoning rather than abstract symbol manipulation.
This principle extends beyond window management - vim's entire philosophy treats text editing as navigation through dimensional space, making complex operations feel natural and memorable.
And like I said, this model can easily be extended beyond just the text editor - you can navigate things in your browser, terminal, etc. Why would I even try to learn and memorize new keyboard shortcuts e.g., every time I install a new music player? I can control volume with j/k and previous/next song with h/l in any music player.
> I do think it's a stretch to call it "immediately graspable"
But it is though. It is very simple grammar. Anyone who's not mentally deficient can understand and learn it quickly. Building the muscle memory takes time, yes, but the idea itself is absolutely graspable. I remember, I hated myself for about a week. After that, my keyboard life was never the same.
My comment was after having learned and gotten very good at vim about 15 years ago and used it primarily (via neovim) for at least a while, probably a few years, before moving to emacs, and finally VS Code. I still use vim for quick edits on the command line. I know how to edit modally, it just feels unnatural for me.
This, though I've always found the Chrome/Firefox vimlike browser plugins to be such second class citizens that they've never stuck with me.
I used to use modal tiling window managers on Linux, but since window managers are always second class on Mac/Windows, that never stuck either. I bounce around too frequently for it to work. I just suffice with tmux for now.
I was pleasantly surprised to find Discord's `s/search/replace` supported as an actual feature, though having it limited to just the last message is a bit limiting.
> I've always found the Chrome/Firefox vimlike browser plugins to be such second class citizens
Bro, you have no idea - vimium-c is absolutely amazing, I just can't really imagine my life without it. Toggling tab pinning and muting, moving tabs, grouping tabs, quickly finding a tab, extracting a tab into a window, joining windows, etc. - if you even try doing all that without modality, you'd have to keep learning new keybindings and memorize them.
The worst part of that is that keybindings would change. For me - font size change on a browser page works the same way as in my editor, and the terminal, and it is the same in every browser that vimium supports.
You basically need to ask yourself if you really want to keep learning and memorizing various, sometimes absolutely unrelated and difficult to reach key bindings that almost invariably require you holding modifiers, sometimes wasting your mental energy on subtleties between ctrl/alt/cmd/shift+key or you'd rather sit down, spend some time and take a systematic approach that will make your life so much easier.
> window managers are always second class on Mac/Windows, that never stuck either.
I don't use Windows much, but Yabai for Mac is really good. I've procrastinated on trying it for a long time, when I finally tried, it took me literally fifteen minutes to start. Then I hooked up my Hammerspoon config and added some key bindings. I'm very happy about it. Like for example, I've been so annoyed by Zoom that always scatters its windows around all my monitors, now I have "group Zoom windows" feature, and it's really nice.
Sure, you can leave it in insert mode the entire time. I'm not sure that's really what you want though, as you'd effectively turn the editor into a basic notepad app.
Probably not, but there are many editors to choose from if you do not like it. Some people prefer just modal so editors like vim/helix/etc. are tailor-made for them.