davideisinger.com

My personal website
Log | Files | Refs | README

index.md (4031B)


      1 ---
      2 title: "A Month With Helix"
      3 date: 2023-08-03T16:19:15-04:00
      4 draft: false
      5 references:
      6 - title: "My thoughts on Helix after 6 months - Tim Hårek"
      7   url: https://timharek.no/blog/my-thoughts-on-helix-after-6-months
      8   date: 2023-07-02T12:53:51Z
      9   file: timharek-no-ah7ilz.txt
     10 ---
     11 
     12 As mentioned in [last month's dispatch][1], inspired by [a post from Tim Hårek][2], I've been using [Helix][3] exclusively for the last month. I'm using it right now to write this! It rips!
     13 
     14 <!--more-->
     15 
     16 I've been a Vim user since ~2010 after moving away from TextMate. I'm rather proficient in it, though it's an incredibly deep tool and there's always more to learn. I've become frustrated with my setup over the last few years, specifically around some conflicting plugins. I've intended to start from scratch with NeoVim, learn how to configure it with Lua, get the native language server stuff working properly, etc., but it's a lot of setup.
     17 
     18 Helix, on the other hand, is a new editor, inspired by Vim and written in Rust. It doesn't support plugins and instead tries to be a fully-featured editor right out of the box. It has the same major modes as Vim (normal, insert, visual) but then also offers "minor modes" (e.g. hit `g` in normal mode for "goto" mode). It's cool, and it all works together well.
     19 
     20 What I like:
     21 
     22 * It's easy to get started
     23   * If you know Vim, you're like 75% of the way to Helix fluency
     24   * It has a nice tutorial
     25   * The minor modes feature little pop-up cheat sheets that make learning the various keyboard combos easy
     26 * Stuff just makes sense, whereas some Vim stuff always struck me as arcane
     27   * e.g. `y` to yank; `space + y` to yank to the system clipboard
     28   * or `:theme` followed by a space displays a list of all available themes (`gruvbox` natch)
     29 * Built-in language server support
     30   * `hx --health` makes it pretty clear how to get your language servers set up
     31 * The multi-cursor stuff is nice once you get the hang of it
     32 * It is simultaneously quite polished + under active development; several times I went looking for how to do something and found an active GitHub PR where the feature is being developed
     33 
     34 What I don't like:
     35 
     36 * It is very sensitive about external file changes; I switch git branches a lot, and if I'm working in one branch, then check out a different branch, and then switch back to the original branch, my next save is often rejected unless I remember to `w!`, which I often don't ([maybe fixed here?][4])
     37 * Can't presently run multiple language servers for the same language
     38   * I'd really like to run both `standardrb` and `solargraph` when I'm working in Ruby
     39   * You can run a separate language server and formatter, which works fine, but there's a visible delay on save before the formatter kicks in, and you don't get nice in-editor warnings about style violations
     40   * [It looks like this will be fixed in the next release][5]
     41 * Missing a couple key features from Vim plugins I'm quite fond of
     42   * [fugitive.vim][6]'s `:Git blame` view
     43   * A file system explorer like [NERDTree][7] -- the built-in fuzzy finder is awesome as long as you know the name of the file you're looking for, which I occasionally don't ([some progress here][8])
     44 * I had to reconfigure how the option key works in iTerm and have lost my ability to type accented characters inside the terminal, which I've needed to do, I think, twice ([more info][9])
     45 
     46 Pull it down with Homebrew or similar, and give it a shot. Hint: you launch Helix with `hx` -- figuring that out might've been the hardest part of my Helix journey so far.
     47 
     48 [1]: /journal/dispatch-5-july-2023/
     49 [2]: https://timharek.no/blog/my-thoughts-on-helix-after-6-months
     50 [3]: https://helix-editor.com/
     51 [4]: https://github.com/helix-editor/helix/pull/7665
     52 [5]: https://docs.helix-editor.com/master/languages.html#configuring-language-servers-for-a-language
     53 [6]: https://github.com/tpope/vim-fugitive
     54 [7]: https://github.com/preservim/nerdtree
     55 [8]: https://github.com/helix-editor/helix/pull/5768
     56 [9]: https://github.com/helix-editor/helix/issues/2469