Helix: Post-Modern Text Editor

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • helix

    A post-modern modal text editor.

  • In my experience, as another longtime user of vim and now using helix as my daily driver, it does take a bit of getting used to. But once you grok the whole idea of "selection first, then action", it becomes a bit easier to deal with. Honestly I think Helix is a better editor for those who are looking for the features of Vim but don't want to learn its esoteric syntax. I had to learn Vi/Vim in order to work with FreeBSD machines back in the day, and I had a whole book to reference its commands, so for me it's kinda second-nature. But for new users, I can imagine Vim not being the easiest thing to figure out.

    I chose to take the plunge and start using Helix most of the time because:

    1. It's like Vim/NeoVim enough that I didn't constantly get stuck. Most of the modal commands are similar to Vim, and you can always fall back to mouse-based selection and using normal commands like Ctrl/Cmd+V and Ctrl/Cmd+C if you don't want to get into the registers just yet.

    2. Built-in support for the stuff I actually care about. LSP, fuzzy file picking, inline docs, IDE-like features like "go to definition", it's all included. And unlike NeoVim, it doesn't crash half the time when I'm working on TypeScript files (thanks Rust!). Haven't needed CTags at all since I started using Helix.

    3. It's fast. Like, way faster than NeoVim or Vim unless you don't use any plugins. And without plugins, it looks great. Tons of themes to choose from, easy to switch them in the config, etc.

    > I have a feeling that movement-action paradigm as opposed to action-movement paradigm of vim will have some tradeoffs with visualisation being a plus, and more advanced repetitions bring a negative, but I haven't totally thought this through.

    I think the "advanced repetition" side of this is just going to look different, more like Emacs or Sublime Text in its functionality IMO. For example, the "Migrating from Vim" guide mentions global replace (https://github.com/helix-editor/helix/wiki/Migrating-from-Vi...). This doesn't really go into how it looks, but what happens looks a lot more like NeoVim than Vim. It's still just as fast as Vim to write these commands, albeit a different syntax that you have to get used to, but the benefit is being able to see what is happening to your file while it's happening, rather than after the fact or having to jump through every instance and "confirm" it (which is problematic on large files). In other words, I think this will be/is possible to do in Helix, but it will just look a little different than in Vim.

  • vim-which-key

    :tulip: Vim plugin that shows keybindings in popup

  • Just an extension.

    It is https://github.com/liuchengxu/vim-which-key if you are interested.

    >Were you also able to replicate the small popups that open when you press `m`, `g`, etc.?

    Yes, although 'm' has a totally different meaning in vim (placing a mark), so there is no popup for that. But it works where there are actually sensible choices, even for marks it works and shows you every available one, which is pretty cool

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • helix-vim

    A Vim-like configuration for Helix

  • I think there is a config that maps more to vim, try this https://github.com/LGUG2Z/helix-vim/raw/master/config.toml

  • nano-emacs

    GNU Emacs / N Λ N O - Emacs made simple

  • elegant-emacs

    A very minimal but elegant emacs (I think)

  • which-key.nvim

    💥 Create key bindings that stick. WhichKey is a lua plugin for Neovim 0.5 that displays a popup with possible keybindings of the command you started typing.

  • If you're using Neovim you want this one: https://github.com/folke/which-key.nvim

    New nvim api lets mappings add a desc which will get picked up automatically with this plugin.

  • powerlevel10k

    A Zsh theme

  • Alternatively Powerlevel10k[0] makes for a fast powerline implementation, especially with instant prompt enabled.

    [0] https://github.com/romkatv/powerlevel10k

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • lapce

    Lightning-fast and Powerful Code Editor written in Rust

  • Helix is cool if you want a terminal editor.

    For a GUI editor, I am very interested in https://lapce.dev/

    It is perhaps the only editor which for me seems as snappy as Sublime Text.

  • vis

    A vi-like editor based on Plan 9's structural regular expressions (by martanne)

  • emfy

    A dark and sleek Emacs setup for general purpose editing and programming

  • That is true. But it’s pretty overwhelming for a lot of folks. I was a spacemacs user. I tried to rebuild what I liked about it. It was a lot, and I didn’t quite get it there.

    I finally found a good compromise though. I started over with this confing: https://github.com/susam/emfy

    From there, I only needed a handful of packages and a few dozen lines of config to get to an editor that was comfy.

  • lite-xl-lsp

    LSP Plugin for Lite XL editor

  • Yes, there is a plugin for it! https://github.com/lite-xl/lite-xl-lsp

    It works quite decently, although again limitations regarding linewrapping apply; the inline lints from lint+ break linewrapping :/

    Also, for Lapce I cannot find server integrations other than a few, namely Rust, JS/TS, YAML, C/C++, Go and Dart. No Python, for example. Adding Python support in Lite's LSP is as simple as adding lspconfig.pylsp.setup() to your config (and installing the server), if you already have the plugin set up correctly.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts