9 ms·
Helix: A post-modern text editor
- canistel 8mo agoDo have a look at the second question in the FAQ :). I do find Helix very impressive. I remember the Python LSP working without any configuration whatsoever. However, I have vim muscle memory built over 25 years of use. I already struggle switching between Emacs and vim (or its equivalents) - for example, after a period of vim usage, I would press ESC repeatedly in Emacs, three of which are enough close a window. While Helix borrows modal editing from vim, it introduces subtle (and meaningful - I have to admit) variations, which unfortunately wreaks havoc with my muscle memory. Maybe the worst part about muscle memory is that unlearning is almost impossible. My dilemma, not Helix's fault...
- dilawar 8mo agoI have been using an ergonomics keyboard for a while and find it impossible to go back to normal keyboard. For the last two weeks, I was forced to work at a normal keyboard. After initial pain for one day, I got back to typing at normal speed. Without losing my comfort with the ergonomic one. I can now just context switch. It wasn't easy though. Perhaps you will also become comfortable with both vim and helix after the initial struggle?
- lorenzohess 8mo agoHave you tried Emacs' Extensible Vi Layer ("Evil" mode)? My muscle memory switched almost seamlessly from Vim to Emacs with Evil mode
- canistel 8mo agoI have in fact. I use Emacs for org-mode and markdown. Because of some reason, evil and org-mode did not mix well - for me. There is evil-org, which I did not try.
- weinzierl 8mo ago"However, I have vim muscle memory built over 25 years of use." Me too and it took a view attempts but I'm on Helix now and don't regret it. Once you are over the most prominent discrepancies like dd and G it's an uphill battle.
- imjonse 8mo agoagreed, it wasn't more than a few days/a week. The real annoyance is if you use other coding environments too which do not have hx bindings (VScode, Google Colab) and have to constantly switch between hx and vim keys. Zed has had very good hx keybindings support for a few months now so this became less of an issue.
- korantu 8mo agoI think Zed editor has helix phylosophy of supporting LSP out of the box while having exact vi bindings if it is important. [1] https://zed.dev/ https://zed.dev/
- kleiba 8mo ago> I would press ESC repeatedly in Emacs, three of which are enough close a window. You can configure every combination of keystrokes in Emacs - just bind M-ESC ESC to something harmless (such as, e.g., not function at all). One possibility would be the following line in your ~/.emacs file: (global-set-key (kbd "M-ESC ESC") 'keyboard-quit)
- ATMLOTTOBEER 8mo agoIs this kind of comment not just a tautological rebuttal to any criticism of emacs
- kleiba 8mo agoNo.
- canistel 8mo agoThank you for mentioning this. I do have something similar... (global-unset-key (kbd "ESC ESC ESC"))
- kleiba 8mo ago...which is probably the better alternative, since having to hit ESC three times just in order to quit the current command seems excessive.
- Panzerschrek 8mo agoI tried using it once by compiling it from sources. Even a release build is several hundred megabytes in size, which I find pretty wasteful. After a little investigation I found, that it has many plugins in form of a shared library, and each of them has pretty huge size, presumably because the whole Rust standard library is statically linked.
- whytevuhuni 8mo agoInteresting, although I checked and on NixOS the binary is just 29MB. It was statically linked, with just libc left as dynamic. I think 29MB is still huge for a terminal text editor, but nevertheless not "hundreds".
- f311a 8mo agoLanguage grammars are ~200-250MB though. They are in a separate folder, and often they are all bundled to support all the languages. Some of them are HUGE. .rwxr-xr-x 4.6M aa 6 Mar 21:52 ocaml-interface.so .rwxr-xr-x 4.6M aa 6 Mar 21:52 rpmspec.so .rwxr-xr-x 4.9M aa 6 Mar 21:52 tlaplus.so .rwxr-xr-x 5.1M aa 6 Mar 21:52 ocaml.so .rwxr-xr-x 5.1M aa 6 Mar 21:52 c-sharp.so .rwxr-xr-x 5.3M aa 6 Mar 21:52 kotlin.so .rwxr-xr-x 5.4M aa 6 Mar 21:52 ponylang.so .rwxr-xr-x 5.5M aa 6 Mar 21:52 slang.so .rwxr-xr-x 6.1M aa 6 Mar 21:52 crystal.so .rwxr-xr-x 6.8M aa 6 Mar 21:52 fortran.so .rwxr-xr-x 9.2M aa 6 Mar 21:52 nim.so .rwxr-xr-x 9.5M aa 6 Mar 21:52 julia.so .rwxr-xr-x 9.9M aa 6 Mar 21:52 sql.so .rwxr-xr-x 16M aa 6 Mar 21:52 lean.so .rwxr-xr-x 18M aa 6 Mar 21:52 verilog.so .rwxr-xr-x 22M aa 6 Mar 21:52 systemverilog.so
- Panzerschrek 8mo agoThat's exactly what I found. Why these files should exist at all? Some other IDEs just have a bunch of highlighting rules based on regular expressions and have a folder of tiny XML grammar files instead of a folder of bloaty shared libraries.
- 8mo ago
- dalanmiller 8mo agoLove `hx`, vim never really clicked for me and the batteries-included nature of helix is one of its best selling points.
- Curiositry 8mo agoThis has been my main editor for prose and code for a few years now (Sublime Text -> Atom -> Vim -> Helix). Overall, it has been great. Many LSPs work almost out-of-the-box, and my config is a fraction the size of my old .vimrc. Surprisingly, it didn’t take that long to update my Vim muscle memory. Days or weeks, maybe? However, I still have mixed feelings about modal editors in general, and most of my gripes with Helix are actually about modal editors and/or console editors in general. Code folding is a feature I’m still waiting for.
- wilkystyle 8mo agoCurious to hear your gripes about modal editors! I'm a long time Emacs user (traditional keybindings, not evil-mode), but I also started using Vim in parallel a little over a decade ago. I feel very proficient/productive in both, regularly using many of Vim's more advanced motions and functionality. I generally love the power and composability of Vim text objects, and definitely experience the benefit of using them. But there are some times where I am doing things like many small edits within a line where rapidly changing modes for all of the edits starts to feel cumbersome. For Emacs, I use multiple cursors and a treesitter-based plug-in for incrementally expanding or reducing the selection by text objects. I also have a collection of my own helper functions for working with text that make my non-modal Emacs approach still feel very comparable to the power of manipulating text in Vim. Curious to hear if your issues with modal editing are similar.
- deleted 8mo ago[deleted]
- Curiositry 8mo ago- It feels like I know all the efficient keybindings, but when someone looks over my shoulder, I become conscious of how much time I spend mashing Esc/CapsLock and i/I/a/A/o/O, compared to how much editing actually happens. - I have nomouse mode on, to try to learn modal editors properly. But the mouse is actually fairly fast for getting to a specific cursor position. In theory, using Helix motions could be faster (and there's gw if I don't know what motion to use). In practice, the mental process of turning a point on the coordinate plane into the correct series of motions (including i) feels vastly slower. Still, Vim, Helix, etc are incredible for structural manipulation of text, and I miss what they provide any time I edit text somewhere else, even with the universal keybindings that are available for navigating/selecting/deleting words, lines, etc. I tried Vim mode in Zed and it just didn't cut it. Some things about Helix that I particularly like: speed and stability (no weird lag on visual block insert!), the jump to diagnostics/changes pattern (]d <Space>a is a surprisingly nice spellcheck interface, with <Space>d for the overview), the jumplist, and the good-by-default fuzzy pickers.
- nurettin 8mo agoI haven't opened a text editor to code in months and probably won't need to anymore. Goodbye vim and intellij, nice knowing you. It was a good while it lasted. Glad I haven't invested decades into emacs like some of my colleagues.
- Biganon 8mo agoI don't think it is something you should brag about
- kristiandupont 8mo agoI wrote my own modal-mode extension for vscode/cursor because couldn't get the VIM-ones to function like I wanted. During that time, I thought that I should look into Kakoune and Helix as those seemed to represent a true iteration on the paradigm. Being able to see what you're about to change makes complete sense, as does the "multi-cursor first" approach. However, after a few weeks, I ended up rewriting things to be more classic VIM-like after all. This might have just been muscle memory refusing to yield, I am not sure. One thing I remember though, was that the multi-cursor+selection approach only really helps when you can see everything you're about to change on the screen. For large edits, most selections will be out of the scroll window and not really helping. I still haven't written it off completely, though with AI I increasingly find myself writing more prose than keywords and brackets, so I am not sure it's going to feel worth it.
- eviks 8mo ago> only really helps when you can see everything you're about to change on the screen Which is still a net positive over the alternative?
- hou32hou 8mo ago> For large edits, most selections will be out of the scroll window and not really helping. That's why the Ki editor has a feature called Reveal Cursors (https://ki-editor.org/docs/normal-mode/space-menu#-cursor-reveal-cursors https://ki-editor.org/docs/normal-mode/space-menu#-cursor-re...), which is specifically made to solve this issue
- klibertp 8mo ago> One thing I remember though, was that the multi-cursor+selection approach only really helps when you can see everything you're about to change on the screen. For large edits, most selections will be out of the scroll window and not really helping. In Emacs, there's an mc-hide-unmatched-lines command that temporarily hides the lines between the ones with cursors. This makes multiple cursors usable with up to a screen-height number of items (being able to place cursors by searching for a regexp helps). I agree, though - MCs are most useful for simple, localized edits. They're nice because they don't require you to mentally switch between interactive and batch editing modes, while still giving you some of the batch mode benefits. For larger or more complex edits, a batch-mode tool ("Search and replace", editable occur-mode in Emacs, or even shelling out to sed) is often a better choice.
- deleted 8mo ago[deleted]
- bayesianbot 8mo agoTried it again few days ago. I kinda get that currently you can only use AI on Helix through LSP, but on top of that it does not have auto-refreshing files when changed outside - makes it really hard to work with external AIs, as I'm just constantly worrying if I'm editing a stale file.
- small_scombrus 8mo agoI know it's not a proper fix, but helix does have `:reload` and `:reload-all` commands I have reload-all bound to Ctrl-r
- dcre 8mo agoSame!
- vaylian 8mo ago> you can only use AI on Helix through LSP How do other editors do this, if they don't use LSPs? Helix specifically choses LSP as the integration mechanism (in combination with TreeSitter) for supporting different programming languages, because it is a language-agnostic protocol and therefore only needs to be implemented once. Is there some established AI-agnostic protocol/interface? I don't think MCP would work here?
- small_scombrus 8mo ago> Is there some established AI-agnostic protocol/interface? AFAIK no
- logicprog 8mo agoACP? https://agentcommunicationprotocol.dev/introduction/welcome https://agentcommunicationprotocol.dev/introduction/welcome
- potro 8mo agoACP Agent Client Protocol https://agentclientprotocol.com/get-started/registry https://agentclientprotocol.com/get-started/registry
- lukaslalinsky 8mo agoI really wanted to like Helix, it's a great software, works out of the box. I dedicated energy to unlearn my vim habits and learn the helix way. I'm now able to use it fairly effectively, but eventually I just came to the conclusion the bindings are done the way they are due to simpler implementation, not simpler user interface. I'm back to neovim for small updates and zed in vim mode for larger code editing.
- exidex 8mo agoHave you tried Ki Editor[0]? It seems to be more into direction that you are looking for. It is not as mature as the rest of the editors but the editing model is definitely an improvement from ux perspective [0]: https://ki-editor.org/ https://ki-editor.org/
- rfmoz 8mo agoVis editor [0] also has multicursor and powerful sam's structural regular expression [0]: https://github.com/martanne/vis https://github.com/martanne/vis
- rgoulter 8mo agoHadn't heard of this. So I looked at the docs for Ki. I see the "Why Ki?", and then it has this: > Being first-class means that it is not an extra or even sidekick; it is the protagonist. Eh. I find it quite off putting. I guess my expectation is that someone enthusiastic enough to write a text editor with a value proposition of "it's got good tree-sitter-based navigation" would want to discuss why they thing syntactic selection is neat. Seeing cliche LLMisms doesn't signal the same level of care to me.
- exidex 8mo agoHaving been in the community for some time, it is just how the authors are, very enthusiastic about the wording. They like to come up with some wild terms explaining different behaviors and reasoning behind those behaviors, like "positional coherence" or "behavioral asymmetry", and the term "kimmunity" to reference to ki editor community. On a surface level, sure, it looks LLM generated, but I would be very surprised if they used LLM to generate that sentence. I choose to look at the actual meaning of the content and what they are trying to do differently
- small_scombrus 8mo agoI desperately wish Helix would support virtual text (code folder, markdown links just showing the text when not selected), but the default keybinds and the way that selecting and editing text work just works too well in my brain to go anywhere else
- kubafu 8mo agoMy default editor for the past couple years. Love the simplicity, speed, and the fact I can navigate comfortably with just the keyboard. Plus Elixir LSP integration is a cherry on top.
- rrr_oh_man 8mo agoLove the FAQ > Post-modern?! It's a joke. If Neovim is the modern Vim, then Helix is post-modern. > Is it any good? Yes.
- deleted 8mo ago[deleted]
- jiehong 8mo agoA new version should arrive this month or the next one. I think it’s worth trying it again then
- vaylian 8mo agoCool. Any information on what will be included in the next release?
- theusus 8mo agoUsing agents to edit code. And Helix doesn’t support live update of files. This is the reason it’s not my first choice.
- pjmlp 8mo agoUp voting, only because it is another native option, away from Atom started trend to ship Chrome alongside every single "modern" application.
- haxfn 8mo agoVim is like C, Helix is like C++ and Ki Editor is like Rust. "Within C++, there is a much smaller and cleaner language struggling to get out." Helix carries a baggage of ideas from Vim. It does not have consistent and transferable keybinds. It does not have composition of ideas: You can move to the next line in the buffer editor with `k` but to move down to the next line in the file explorer you have to do `ctrl+n`? Vim is like C, Helix is like C++ and Ki Editor is like Rust.
- efnx 8mo agoBut how is ki like rust, and why is that significant? Helix is pretty rad, even if what you say is true.
- ministryofwarp 8mo agoI'm puzzled by the idea that positional constant is good for key bindings. How does the machine I ssh to know my keyboard layout or whether I am using a input with a related positional concept? (I suppose I should say I was puzzled by it, and now I am puzzled why this idea is back yet again.)
- hou32hou 8mo ago> How does the machine I ssh to know my keyboard layout Why does it need to? If you are using say, Dvorak, you can just pick the keyboard layout by pressing `*` (a keybinding which is not affected by the chosen keyboard layout)
- ministryofwarp 8mo agoThe machines and coworkers I have have no idea what I am using locally if they don't watch my typing, it could be QWERTZ or Turkish-F it could be a chorded keyboard. Going backwards to layout makes no sense to me. They then can't tell me what to type, we get to fight about env defaults, etc.. And for what? If your composition is any good it is approaching the abstract of code so looking at your hands and some visual feedback is of little value as it traverses the whole context.
- seg6 8mo agoHelix has been my main editor for a few years now. I went from Sublime Text to VS Code to Neovim, and eventually landed on Helix. I’ve shipped a lot of code with it, and my config is still under 50 lines, even with a few extra keybindings to emulate some Vim bindings I still find useful. I didn’t find the keybindings particularly hard to get used to, and switching back and forth between Vim and Helix has never been much of an issue when I’ve had to work on a system without `hx`. For the curious: https://github.com/seg6/dotfiles/blob/1281626127dfbf584c29390413736e1a2f10453e/helix/.config/helix/config.toml https://github.com/seg6/dotfiles/blob/1281626127dfbf584c2939...
- rgoulter 8mo agoHelix is a really nice editor. I use it as my go-to for when I'm in the terminal environment. For sufficiently complex manipulations, I find the "selection-action" ("motion-action") to be more intuitive than "action-motion". Even with vim, I'd often like making use of visual mode. I think the main limitation to this that I believe is it's probably a bit slower for quick + frequent edits compared to vim.
- bulbar 8mo agoI want an editor that's built around language entities. "Move to end of the scope" or "insert after this expression" and similar. The overlap between languages should be large enough to make this feasible.
- srik 8mo agoNeo/vim does this with community and built-in “text objects”. https://neovim.io/doc/user/usr_04/#_text-objects https://neovim.io/doc/user/usr_04/#_text-objects
- zer 8mo agoThese are great. I really have come to love this little plugin that extends and creates a/i textobjects: https://github.com/nvim-mini/mini.ai https://github.com/nvim-mini/mini.ai
- bulbar 8mo agoDo you use it professionally or as your daily driver? My experience had been that such plugins tend to need a lot of tuning to work flawlessly, which I don't like to do anymore. I like to live default mode for the most part, but for that a piece of technology must be dedicated to a smooth out of the box experience. But all that fancy neovim/dwm/... ecosystem tend to be "we provide you a great framework to create your own things", which is nice, but not for me.
- srik 8mo agoNot op but I’ll vouch for the mini.nvim plugin suite. While I take advantage of their high configurability, their defaults are well thought out and I happily use some like that as well.
- vaylian 8mo agoHelix has built-in Tree Sitter support. > "Move to end of the scope" You can select the current syntax object under the cursor with alt+o and expand the selection to the enclosing syntax objects with further presses of alt+o. This moves you automatically to the end of the selected syntax object. You can use alt+b to move to the beginning of the selected syntax object. > "insert after this expression" Select the expression and after that you can use regular commands like a and p.
- ctenb 8mo agoWorth noting: the plugin system is steadily approaching maturity and will probably be integrated and released soonish™ https://github.com/helix-editor/helix/pull/8675 https://github.com/helix-editor/helix/pull/8675
- rw_panic0_0 8mo agoI open that pull request from time to time to check the progress. Want them to release it so bad
- zenlot 8mo ago[dead]
- swiftcoder 8mo agoI was really hoping this would have a postmodernist aesthetic
- qudat 8mo agoI learned about kakoune from helix. I played with both of them to figure out which one I preferred and ended up choosing kakoune for simplicity. It’s a fantastic editor and my cfg is 50 LoC which is just fine for me. As long as helix doesn’t add a plugin system I think both are superior to neovim. Neovim defaults are just awful. I hate that quickfix and loclist are so close to being useful for pickers but it just misses the mark and now there’s lock in on some terrible impl because we don’t want to break backwards compatibility. The select -> action model is superior. Having an opinionated editor just makes so much sense. We don’t need 10 different picker implementations.
- jqbd 8mo agoI want to like it, it's much snappier than vim, but: I hate selecting lines up. Down xxx is fine. But to go up I have to do x alt; v k. This would be shift+v k in vim. I often use } { to navigate the file in vim. In hx it's ] p which is very awkward for the fingers. The auto selection makes it hard to read once I use ] p. Pasting does not behave like vim, often have to click o first then p. I have to often press ; to unselect just to be able to insert after I navigate to a character with F f t T. Can't copy from documentation. Can't create files in the explorer. It feels like much more work to use hx keybindings than vim. What I love: Hints whenever you press a key allow you to learn keybinds quickly. Very quick. Built in search, file picker, lsp rust out of the box.
- shinypants 8mo agothis doesn’t address all your concerns but i use “X” to select lines above: [keys.select] X = "select_line_above"
- irusensei 8mo agoI love it but the search and replace sequences are too complicated and then I have no idea how to unselect multiple lines without specifying a line. My vim muscle memory is too strong and stubborn.
- fnordlord 8mo agoI'm in a similar boat. It's become my primary editor but I still open VSCode everytime I need search-and-replace or an easy git-blame. For unselect, if I'm understanding correctly, ; will unselect with your cursor at the end of the selection, Alt-; will unselect and move your cursor back to the beginning.
- g947o 8mo agoThis. I tried it out for a few days, and I cannot justify spending time on this when I am already very productive with vim/VSCodeVim. Helix is nice in many ways but not worth switching over
- discommentbad 8mo ago[flagged]
- level87 8mo agoI've used Helix as my main editor over the past few years, I love it, but the speed of development is quite slow. Would love to see some AI related plug-ins when the plug-in system is finally released.
- buzzerbetrayed 8mo agoI can’t believe it still doesn’t have plugins. That’s crazy. They’ve been working on that for so many years.
- marcosqanil 8mo agoI love helix. Incredibly snappy and minimalistic but still having every feature a serious IDE needs, out of the box.
- shnpln 8mo agoI have been using helix for over a year now. I love it.
- para_parolu 8mo agoI was very enthusiastic about helix since it rethinks some of vim complexity. But lack of plugins makes it just an editor for small files only that I can quickly start on server and doesn’t not make it suitable for serious work.
- feelamee 8mo agowhy? There is LSP support included. Pretty usable. Of course this is not fully IDE, but I don't expect this from "editor"
- para_parolu 8mo agoJust to be clear: it’s not suitable for me to do work using this editor. There are many features lacking that makes me more efficient. In case of vim that is solved by a few plugins. It’s not about being IDE but rather about being well fitted tool. I wish I would only need LSP but it’s not enough for my work.
- linhns 8mo agoAgreed. But very useful for quick editing, and easier to install than vim on Windows.
- para_parolu 8mo agoThat’s a perfectly fine usecase. But all systems I work with have vim installed by default anyway. And vim handles big files better than helix (not sure why)
- raphaelmolly8 8mo ago[dead]
- messh 8mo agoohh Ki and Helix on the front page today... it's a good day! :)
- assbuttbuttass 8mo agoI really want to like Helix, but I wish the developers paid more attention to performance, or were more receptive to outside contributions. Helix can really chug, even on small files, and the perception in the community seems to be "it's written in Rust so therefore it's blazingly fast :rocket-ship-emoji:"
- lofatdairy 8mo agoThis is only tangentially related, but regarding: >>Post-modern?! >It's a joke. If Neovim is the modern Vim, then Helix is post-modern. It's interesting that postmodern is so often used by people, perhaps less familiar with the arts and the humanities, to mean "an update to modern" or a progression thereof. They use it in a strictly literal sense, eschewing the precise meaning of the term they're referencing by mere addition of discontinuity as incremental difference. Obviously, there's little impact to this. The term is hardly degraded by engineers advertising to other engineers. It looks a touch unread, but then again we have people like Thiel and Luckey misinterpreting Tolkien, so again it's hardly the most egregious example. I guess it just jumped out to me because I was hoping to see something creative truly postmodern.
- the_hoser 8mo agoBlame Perl. As far as I can tell, they started it.
- ctmnt 8mo agoThat jumped out at me too the first time I ran into Helix making this joke, and I was also disappointed to find that they meant modern++. That said, I’m not sure I agree with your assessment that it’s wrong, exactly. Postmodernism did indeed follow modernism and come into being as a reaction to modernism. So I think “postmodernism” has a naive and original sense of being “what follows modernism”. Decades (so many at this point!) of discourse have added layers to that and undermined it and generally made it more complex. But the underlying meaning of the term remains. (If your instinct is to respond with arguments about how works not limited to late 20th century western culture can be nonetheless classified as postmodern, I hear you, but the fact that the term itself was only coined post modernism remains, and is all I’m pointing to.) Personally, I get more hung up on people using “modern” to mean “new”. Then to use “postmodern” to mean “more new” while to my ears (eyes) it means “dated af” is even funnier and more jarring. Helix, the first editor to not believe in grand narratives. Helix, the relativist editor. Helix, now updated with the latest from Foucault and Derrida!
- debois 8mo agoI switched from neovim because plugins and updates kept breaking it, and I never really did feel like I was in control of it anyway. Helix does what it does, no fuzz. Never breaks. You do start to think “can I get helix keybindings in my shell”, though.
- landr0id 8mo agoI've always used GUIs and had to basically break my brain to learn vim keybindings (in Sublime Text) some time ago and the helix bindings are just different enough to throw me off. Sucks because I would prefer an out-of-box solution that "just works" and I'm comfortable in across all my machines for terminal text editing.
- __MatrixMan__ 8mo agoAt least once a week I daydream about altering nushell so it can run helix as a subprocess for handling the editing parts. Maybe one day I'll go for it. Until then I'll just to make frequent use of the open-in-editor command.
- semiinfinitely 8mo agoI refuse to take a second look at this project until it has a functioning plugin system
- lofaszvanitt 8mo agoWhere are the 3D editors. What is this ridiculous obsession with text editors.... Come on, jump out of your comfort bubble.
- saidnooneever 8mo agothis finally replaced nano for me. a nvim where keybinds are not scary and plugins and configs are unneeded. really wonderful.