Hacker News new | past | comments | ask | show | jobs | submit login

Personal anecdote: I've used Vim for many years, but I never progressed much beyond the basics, because I almost never put much active effort into learning more advanced motions. About a year ago, I discovered the Helix editor, which has a (IMO) genius feature, where pressing a key to start a motion or other action pops up a little pop-up box that shows all the possible options. It just perfectly clicks with my brain, I can easily ignore the pop-up once I've got the muscle memory, or I can even disable the pop-ups altogether. It's brilliant for discoverability.

With this, I've passively memorized far more advanced motions in the last 12 months than I did in the ~8 years before that. And since Helix is a vim style editor, many of these motions also work in vim!

I feel like Helix is the perfect editor for people like me who know just enough vim to be comfortable, but never got very deep into customizing or muscle memory with advanced motions. Helix does some things differently compared to Vim, which I hear puts off some more advanced Vim users.

The built-in LSP & highlighting support with a stack-based "jump to symbol" and keybinds to traverse the stack also perfectly maps to how I want to navigate code, it has made me far more productive than ever before.

I'm not affiliated with the project myself, I'm just super happy I found the perfect editor for me :]




LazyVim comes with this as well, although with a 1 second delay or so in case you've already got it in muscle memory.

It's the Neovim flavor that Shell Bling Ubuntu [1] installs, though, so I'm biased. I've been considering including an option to install `hx` as well in there.

[1]: https://github.com/hiAndrewQuinn/shell-bling-ubuntu


There's a great write-up of a great set of utilities!


The main difference between Vim and Helix is that Helix is not hackable at all. Its configuration allows only very basic settings. It is impossible to change almost anything in its behaviour. So it focuses on being good out of the box. Whether it succeeds or not is for everyone to judge for themselves.


I think Helix have gone the right way around with their priorities. They've started by making the right things built-in that most developers would need on a day-to-day basis. It's already better than configuring vim/neovim in that regard as it just works out of the box. An example is having Tree-Sitter and LSP already configured, so you get the best syntax highlighting available, and IDE-like functionality.

The customizability/hackability will come later, they're working on extension support plus other stuff, but I think for most of their users, this isn't the number 1 priority.

I guess their target users are those who just want to get up and running on a modal editor without spending too much time in Lua or trying to get plugins setup.


I think they went the right way too, and I say that as someone who mains heavily-configured Emacs. I like installing Helix in a fresh environment by just bringing the .exe and being able to get right to work with all the features I need.


Seems at least extensability is on the mind of the Helix team:

> There’s two prototypes we’re exploring that could potentially exist side by side: a typed list/ML-like implementation for scripting and a Rust based interface for things that require performance. Could potentially run both in wasm but I’m personally a bit unhappy with how big wasm implementations are, easily several orders of magnitude compared to the editor

https://github.com/helix-editor/helix/wiki/FAQ#how-to-write-...

So they're not avoiding making it extensible on purpose, seems they haven't found the right way to do it yet.



Emacs has something similar in which-key.

Of course GUI apps have had pop-downs from the File-Edit-View-... row [since forever?] so that things like Alt+F will show contextual actions. But at least in the Emacs community people get blown away when someone makes such a basic addition.


In Emacs, you can also insert C-h in a key combination. So you can do the basic things like

  C-h k   to pull up the help for a key combination
  C-h f   for a function 
  C-h v   for a variable
  C-h m   for currently active modes
But you can also do things like this:

  C-c C-h   to pull up every key combination that starts with C-c
Emacs has excellent discoverability out of the box thanks to this.


Yeah I love how you can interrogate things like that.

Meanwhile, in GUI land: here’s fifteen screenshots carefully manually highlighted which shows you how to change your language to Turkish.

Regular GUI apps are just too rigid.


You can also use Hydra for Emacs.[1] Once I discovered how to configure Hydra, I made it a habit to make one for every new major mode I need to use.

[1] https://github.com/abo-abo/hydra


There’s also Kakoune, which is very similar to Helix.

See https://andreyor.st/posts/2023-09-20-why-kakoune/


Kakoune makes no claims to be Vim compatible though. The keystrokes are completely different.


Helix is not Vim-compatible either.


One big difference between Helix and Kakoune is that Helix has a visual mode, whereas Kakoune only wants chording to extend text regions.


Of course, Spacemacs provided this functionality out of the box ten years ago using evil-mode (which is actually vim, so all the motions work in vim too, not just some of them) and which-key ten years ago and it's simple to set up in vanilla Emacs too, even for a beginner (I know because this was the path I took as a beginner)


Spacemacs is a good project, but it certainly isn’t easier to set up than helix. Helix literally requires zero configuration to enable this functionality.


Nice! I have memorised a lot of Vim actions over the years, but this would still absolutely help me a lot. I would love to have this for (Neo)Vim.


There's a plugin for that called which-keys


Thanks, this sent me down a rabbit hole of NeoVim plugins, but I've enabled it now :)


I recently started using Helix too and it does what I want out of the box and is the first modeless editor that really works for me.

I am sure you can set up vim to be very much the same, but that is a significant barrier to getting started. I have tried and had problems getting it as I wanted.

The problem is that the keys are different from vim so the muscle memory does not work across the two.

I would really like to have a more lightweight editor with the same key bindings for quick edits on small files.


This is also how magit works, and I agree it's fantastic. Using magit has taught me so much more about command-line git than my past 12 years with it in the command line.


There is a well known plugin for neovim to do this kind of behavior. You can even create your own hotkeys into that plugin and will help you navigate and memorize different hotkeys for the editor. The plugin is called whichkey, and this is their github https://github.com/folke/which-key.nvim


I'm today a neovim heavy user, but even using lazyvim, there's a lot missing with which key. Helix seems to be more out of box.

I'm also restarted my journey with neovim after helix.

Actually lazyvim convinced me to give another chance, because the community packs and mason makes lsp so convenient!

Astronvim is also a good contender, but I broke it so many times trying to customize.


Off-topic: does Neovim have a stable GUI distribution that runs well on Windows and includes fuzzy file search and a file explorer?


I don't think there is a pre-packaged flavour of this. You'd have to use a plugin manager for neovim to install fzf.nvim, telescope and nvimtree. If you want to use nvim more extensively I'd recommend a config bundle like NvChad, AstroNvim or NvPunk, those are mostly cross-platform (might require a few utils like ripgrep, stuff for LSP). They already come with all of this pre-configured and you can disable any plugins you dont like easily. They're also suprisingly snappy thanks to conditional plugin loading.


- For GUI https://github.com/neovide/neovide

- For Fuzzy file search you will need to add Telescope plugin

- For File Explorer, you could use Neo-tree.nvim




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: