When I was in high school I found Sublime Text and learned “multiple cursors”. Since then, I’ve transitioned to vscode, mainly because I need LSP (without too much configuration work) for my work.

I keep hearing about how modal editing is faster and I would like to switch to a more performant editor. I’ve been looking at helix, as the 4th generation of the vi line of editors. Is anyone using it? Is it any good for the main code editor?

The problem that I have is that learning new editing keybindings would probably take me a month of time, before I get to the same amount of productivity (if I ever get here at all). So I’m looking for advice of people who have already done that before.

My code editing does involve a lot of “ctrl-arrow” to move around words, “ctrl-shift-arrow” to select words, “home/end” to move to beginning/end of the line, “ctrl-d” for “new cursor at next occurrence”, “shift-alt-down” for “new cursor in the line below”, “ctrl-shift-f” for “format file” and a few more to move around using LSP-provided “declaration”/“usages”.

I would have to unlearn all of that.

Also, I do use “ctrl-arrow” to edit this post. Have you changed keybindings in firefox too?

    • micro@programming.dev
      link
      fedilink
      English
      arrow-up
      7
      ·
      1 month ago

      Same. Jetbrains makes the best IDEs hands down IMO and I say this after 20 years of coding and using numerous IDEs. I also use vscode as a backup but as more of a glorified text editor.

        • FrostyPolicy@suppo.fi
          link
          fedilink
          arrow-up
          4
          ·
          1 month ago

          I’ll add shift + f6 for refactor rename and ctrl + 6 for redefining your function i.e. add/remove parameters and/or return value.

  • uthredii@programming.dev
    link
    fedilink
    English
    arrow-up
    24
    ·
    edit-2
    1 month ago

    I use Helix

    TLDR: Yes I think helix is worth trying out. It has some missing features but it is an amazing piece of software.

    Yes I use helix daily. It is very fun to use and you can do many things faster. It is particularly good when navigating a (large) codebase you know fairly well. You are able to jump around and find/edit relevant code very quickly.

    Compared to vs code:

    • it is much faster and more minimal
    • It might be harder to get things up and running than in vs code, e.g. to get auto-completion working in helix you need to have the LSP for that language installed. It can be a bit confusing if you have never done it before but it is easy once you have done it a few times.

    Compared to neovim I think it is:

    • easier to learn
    • slightly faster - especially with large files
    • you will have a much smaller/simpler configuration. AFAIK Helix has more features working out of the box than neovim (file picker, lsp support ect) and needs less configuration to get things to a workable state.

    The downside of helix compared to both neovim and vscode is that it does not have plugin support yet so you will need to use other tools in combination with it to get an equivalent experience. Here are some tools that are commonly used with helix:

    Helix really shines when:

    • performance matters - I have edited files with millions of lines and had no trouble on codebases where my colleagues IDE’s become very slow.
    • You want to use multiple cursors at times
    • You want a simple or no configuration
    • It is taking too long to learn the vim keybindings - vim keybindings are more concise but less intuitive and harder to learn

    I recommend you use the tutor (hx --tutor) for a few minutes each day to learn the keybidings.

    • verstra@programming.devOP
      link
      fedilink
      arrow-up
      9
      ·
      1 month ago

      Thanks for the overview. I’ll work with tutor and see how frustrated I get :D


      Regarding language servers:

      Recently, I got into this philosophy of “every project needs a declarative environment”. It means that there is a committed file that should contain all tooling need to work with the project. Compilers, formatters, test runners and also: language servers.

      This fights with vscode extensions which try to be clever and download their language server / bundle it into the extension itself. “No, rust-analyzer, I don’t want your build because it does not work with xtensa target arch I’m using in this project”.

      So actually, this ties nicely with helix not providing the language servers itself, but allowing you to bring your own.

    • Deebster@programming.dev
      link
      fedilink
      English
      arrow-up
      7
      ·
      edit-2
      1 month ago

      I happily use Helix for Rust, etc projects, and as a general editor. I switch back to VSCode for TypeScript/Svelte projects because the plugins make it more productive for me. I do miss the editing experience and need to check if there’s a VSCode plugin that lets me not confuse my muscle memory.

      Helix was the thing that finally made me remap my caps lock key to esc.

    • Dark ArcA
      link
      fedilink
      English
      arrow-up
      5
      ·
      1 month ago

      I’ve recently taken to kakoune which was one of the inspirations for Helix.

      It’s not as fancy (in terms of built-in features) out of the box, but it’s very performant, integrates with tmux well, and for the C++ and Python I’m writing I haven’t felt the need for much beyond token based word completion and grep.

      The client server model it uses has really let me improve my tmux skills because I’m working inside of it more and using it for editor splits.

      I don’t know if Helix does this, but I’ve also come to love the pipe operator (where you just pipe a selection into some external program and the selection gets replaced with the output, so you can use the e.g. the sort command to sort text). You can also pretty easily add in custom extensions via command line programs.

      • uthredii@programming.dev
        link
        fedilink
        English
        arrow-up
        2
        ·
        1 month ago

        Ahhh nice, I have thought about trying out Kakoune as it supports plugins. Do you use many plugins/find them useful?

        Helix does have a pipe command also.

        • Dark ArcA
          link
          fedilink
          English
          arrow-up
          2
          ·
          1 month ago

          I’ve mostly just tweaked the configuration and built my own comment formatter/reflow command based on the comment style at work.

          It’s almost more about what it doesn’t have for me, because what I’ve run into a lot with trying newer editors is they try and manage the code too much and the code base at work has its own style guide that doesn’t match what the editor tries to do. So the editor might make me slightly more productive … until I find myself fighting with it every 3 lines because of auto formatting or some language server quirk.

  • jeffhykin@lemm.ee
    link
    fedilink
    arrow-up
    20
    arrow-down
    1
    ·
    edit-2
    1 month ago

    Don’t Speculate

    Go to Twitch/YouTube. Watch a senior Vim/Jetbrains/Emacs/VS Code/Helix dev churn out code for a hackathon/advent-of-code, and see what you are (or are not!) missing out on.

    If you have “how the hell did they just do that” moments, figure out what that feature is, and STEAL IT. If its too hard to steal, then maybe you are being limited by your editor. Base your “fear of missing out” on what you see rather than random people tossing their opinions around. Only you can answer “how much is that feature worth to me and my workflows?”

    • If you’re going to try modal editors, sooner is exponentially better. Probably start with Vim bindings for VS Code.
    • If you’re not going to go modal, then make absolutely sure you don’t bottom out. To be frank, Ctrl+D is the tip of the iceberg. Half the benefit of modal editors is, mastery is mandatory; they chase you around with a 10k volt taser until you’ve got 100 instinctual shortcuts. Hardly anyone mentions this but Go beyond/outside your editor: At the OS level, use spacebar as a modifier key, where holding spacebar converts your WASD into arrow keys. Then disable your normal arrow keys. Something like that will get you vim-like benefits, but in every app, and with a learning bump instead of a learning mountain. For VS Code, get cursor jumper extensions like Mario (block jumper), get cursor-alignment extensions, write boatloads of custom code snippets, get a macro record+replay extension, make a jump-to-next quote, jump to next bracket, install sequential number generator extension, a case change (camel case, snake case, etc) extension, sort lines, case-preserving rename. If you can avoid bottoming out, and keep learning, you’ll likely never feel that you are missing out on whatever modal editor people are swearing by.
    • 0101100101@programming.dev
      link
      fedilink
      English
      arrow-up
      6
      arrow-down
      4
      ·
      1 month ago

      I get this, but an IDE should be invisible and grow as you do and not require you to learn lots of janky things before it becomes a little bit useful for you.

      Need the basics, great, here they are. Don’t understand some advanced feature? Well the IDE has it here, but it isn’t in your way, mess with it as and when you want. It’ll still be there.

      I don’t think one IDE does everything for different languages and its ok to swap editors depending on your workflow, your project and your ever-changing skillset.

      • jeffhykin@lemm.ee
        link
        fedilink
        arrow-up
        5
        arrow-down
        1
        ·
        edit-2
        1 month ago

        I get this, but

        Why not say “I get this, and …” ?

        I don’t think the idea of a learn-as-you-go editor goes against the idea of watching skilled devs with their favorite tool

    • Troy@lemmy.ca
      link
      fedilink
      arrow-up
      5
      ·
      1 month ago

      kate

      I use Kate – part of the KDE project ecosystem (for anyone else wondering) – on all platforms, including Windows. So worth it.

    • Fonzie!@ttrpg.network
      link
      fedilink
      arrow-up
      1
      ·
      14 days ago

      IMO Kate is just VS Code or Sublime Text but worse. The LSP never works, I can’t have multi-caret editing, it’s harder to extend it’s functionality, etc. etc.

      Just use open source VS Code (or better yet VS Codium), at that point.

  • Shanmugha@lemmy.world
    link
    fedilink
    arrow-up
    13
    ·
    1 month ago

    I keep hearing about how modal editing is faster

    Please, do yourself a favor and ignore that noise. It is more a question of like/dislike and training. Personal sidenote: I daily alternate between PhpStorm and Neovim. Can’t say doing things in either is faster/slower to any significant degree (PhpStorm is mostly there for the things I have not yet configered properly in Neovim, like looking through git history)

    and I would like to switch to a more performant editor

    This should be looked at and tested objectively: is it working with big files that is the problem? Or navigating the code base? Or something else? Maybe it is better to tweak vscode instead?

  • zaphodb2002@sh.itjust.works
    link
    fedilink
    arrow-up
    13
    ·
    edit-2
    1 month ago

    I started with neovim because I hate my laptop’s mousepad, and that’s often pushed as a benefit of modal editors, not needing the mouse. After I used it for a while I found that not only could you do stuff easily that would be difficult in, say vs code, but it was also pretty fun. It’s honestly a bit of a power trip sometimes, makes me feel like a 90s tv hacker. Also plugins. So many neat plugins.

  • breakcore@discuss.tchncs.de
    link
    fedilink
    arrow-up
    11
    ·
    1 month ago

    Helix is absolutely wonderful.

    Used to use Vim/Neovim, but the hassle of setting it up and maintaining huge configuration files was a pain (for me).

    Also I never really got it working the way I wanted and never had LSP working for all the languages I needed.

    Helix on the other hand. My config file is under 20 lines, LSP works super for all my needs. Well thought out keybindings (mostly) and overall a joy to use.

    Nice features and fast.

    Still a bunch of things missing, it is a rather young piece of software, but I have been using it as my only editor for the last 1 1/2 years.

    • verstra@programming.devOP
      link
      fedilink
      arrow-up
      4
      ·
      1 month ago

      Yeah, keybindings are well thought out. The most off-putting thing of default vim is that there are about 5 different “delete” commands. One for a character, one for the whole line, one for selected text, one for end of line. In helix, this is all just “delete selected text” and then “x” is for selecting a line. Make so much more sense.

  • AnarchistArtificer@slrpnk.net
    link
    fedilink
    English
    arrow-up
    10
    ·
    1 month ago

    The main reason I like vi/vim is that if you’re having to use multiple different computers (such as if one is a sysadmin, or in my case, does scientific computing), because if you’re running on Linux, you can be confident that vi/vim will be on it.

    For personal use, I’ve been using emacs, but I can’t recommend that without feeling like I’m suggesting you try some heroin. I enjoy emacs because of it’s complexity and how much power it gives me to modify it. It’s very easy to fall into feature creep and over complexity though. That’s why I can’t recommend it — it’s good for me because I am a chronic tinkerer, and having something to fuck around with is an outlet for that.

    I would recommend learning the basics of vim though. As you highlight, getting back to your current level of productivity would take a while, even if you loved vim and committed to it wholeheartedly. It is possible to try it out with little commitment though, for the perspective. If you’re on a machine that has vim installed already, try the vimtutor command, which will start the ~30 min long inbuilt tutorial for vim. I liked it for giving me perspective on what on earth vim even was.

    I know you don’t use it anymore, but I just want to fistbump you re: sublime text. I really loved that as a basic text editor that was, for me, just a slightly nicer notepad.

  • UraniumBlazer@lemm.ee
    link
    fedilink
    English
    arrow-up
    10
    arrow-down
    1
    ·
    1 month ago

    Vscodium. Anything else (ESPECIALLY VIM, SO DON’T TELL ME TO USE VIM) makes my brain want to eject itself into the 37th dimension to look for Nirvana and the true purpose of life.

    • xep@fedia.io
      link
      fedilink
      arrow-up
      14
      arrow-down
      1
      ·
      1 month ago

      Hey have you tried using Vim? I like it better than Emacs

    • verstra@programming.devOP
      link
      fedilink
      arrow-up
      3
      ·
      1 month ago

      Haha, I know that feeling from earlier when I was trying out hx --tutor. Just staring a the keyboard trying to remember which key to press, only to press the wrong one and have it do something completely unexpected.

  • PokerChips@programming.dev
    link
    fedilink
    arrow-up
    9
    ·
    1 month ago

    NeoVim plus tmux.

    Great multi dimensional way of operating. You have access to the terminal and your ide.

    It’s beautiful

    • wazoobi@lemm.ee
      link
      fedilink
      English
      arrow-up
      7
      ·
      1 month ago

      I took a look at Helix when I was trying to learn vim and found it very easy to get started with, but was concerned about missing out on learning more standard vim bindings and functionality.

      I found LazyVim + NeoVim got me pretty much the same experience without diverging as much from vim. Mostly I appreciate having access to a cheatsheet for commands.

      • verstra@programming.devOP
        link
        fedilink
        arrow-up
        2
        ·
        1 month ago

        was concerned about missing out on learning more standard vim bindings and functionality.

        What do you mean? Do the standard vim bindings have some specific quality that you are after? Or do you work with many different servers and would have to use what ever editor is installed there?

        • wazoobi@lemm.ee
          link
          fedilink
          English
          arrow-up
          2
          ·
          1 month ago

          Well I was mostly looking to learn vim and was trying to use Helix as a way to do that because it looked like vim, but with a commands window that popped up to help learn the commands. They’re upfront about making some breaking changes from vim though, and while I may not need to jump into a bunch of different machines that often I do like the flexibility of being able to hop into vi, vim, nvim, or some GUI editors with vim bindings relatively comfortably. So I found that LazyVim was more what I was looking for personally and nearly as easy to work with out of the box.

          I am glad to see the project seems to be going strong. That was another minor concern of mine, there’s little risk of vim going anywhere, but I remember being excited about the Atom editor a while back and that just kinda faded away. If it passes the test of time I’d be happy to try it again in the future. I figure it would be easier to go from vim -> helix than vice versa.

  • flamingos-cant@feddit.uk
    link
    fedilink
    English
    arrow-up
    8
    ·
    edit-2
    1 month ago

    I use Emacs and love it. It’s an amazingly frustrating (and just plain amazing) piece of software, but it’s hard to move away from it because it’s the only thing like it. Maybe if Lem every gets mature enough I might switch.

    I probably wouldn’t recommend it though as it doesn’t sound like what you’re looking for.