this post was submitted on 09 Feb 2025
100 points (99.0% liked)

Programming

18127 readers
565 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 2 years ago
MODERATORS
 

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?

top 50 comments
sorted by: hot top controversial new old
[–] spacemanspiffy@lemmy.world 4 points 1 hour ago

Neovim genuinely makes me happy. I love it to bits.

[–] TypicalHog@lemm.ee 1 points 3 hours ago

I use VSCodium atm.

[–] Hawk@lemmynsfw.com 3 points 4 hours ago

I left a comment before but I thought I'd address the concerns around modal editing. It's not as hard as it seems, once you wrap your head around hjkl you'll be fine.

Use Lazyvim to get started and install the vim plugin in vscode. Try it qutebrowser too you won't look back honestly.

Consider helix too, it works out of the box but the keys are slightly different to Vim which makes it challenging for me.

[–] MITM0@lemmy.world 3 points 6 hours ago* (last edited 6 hours ago)

I use Lapce, which could be a great native alternative to VS-Code (Also it's built with Rust, this is for the Rustaceans)

There was a time where I used Geany as well, I still like it

[–] MXX53@programming.dev 5 points 9 hours ago

I use emacs when on my personal machines. VS Code at work.

The fastest tool is the one you are best at using. I find that my tool doesn't make me fast, my ability to solve issues makes me fast. I very rarely learn a new tool unless it accomplishes something for me my other tools do not.

For example, at work I use windows and regularly ssh to servers. My entire job is spent ssh'd into other servers. Emacs terminal emulator is spotty at best when using ssh on windows. There are ways to make it work, but some modifications get flagged by our SEIMs. So in that case I use vs code, and the ssh remote connection options and split terminal interface.

At home I use emacs. I have all Linux machines so my terminal plays nicely. I also am working on reducing my RSI from years of tech work. The less mousing I have to do, the better. Emacs allows me to keep my hands on my keyboard.

[–] Hawk@lemmynsfw.com 5 points 11 hours ago (1 children)

Neovim, Emacs, Helix and VSCode.

Zed has been fun.

VsCode and Pycharm are just too slow for me. You need a very fast machine with a lot of RAM.

[–] joshcodes@programming.dev 2 points 5 hours ago

Did you mean Visual Studio the second time?

[–] zaphodb2002@sh.itjust.works 12 points 14 hours 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 that you could 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.

[–] Eyedust@sh.itjust.works 1 points 8 hours ago

I used to use VSCodium, but in my quest to touch the mouse as little as possible I switched to Neovim.

I hate to be that guy but (neo)vim has served me well for too long. I don't even use any crazy maps or plugins; it's just comfy.

[–] TheTimeKnife@lemmy.world 5 points 13 hours ago

I'm still learning to code, but I tried out a bunch and I've liked using Vim, VScodium and Pycharm.

[–] Realitaetsverlust@lemmy.zip 7 points 14 hours ago

I swapped to neovim 10 months ago. Haven't looked back. Actually, I've looked back a LOT for the first few weeks because I couldn't figure out how to do certain things. But the more you learn the better it becomes. Not needing your mouse is SO good.

[–] PokerChips@programming.dev 10 points 18 hours ago

NeoVim plus tmux.

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

It's beautiful

[–] prettybunnys@sh.itjust.works 4 points 15 hours ago

vscode + whatever connection plugin you need + vim plugin

[–] AnarchistArtificer@slrpnk.net 9 points 18 hours 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.

[–] LainTrain@lemmy.dbzer0.com 5 points 16 hours ago* (last edited 16 hours ago)

Not dev but I'm in IT/Cybersec mostly as it's much easier to find jobs there and I use vim just about everywhere, usually with tmux and i3 with custom vim-like keybinds (super+j move focus right etc), I use vim even on my phone in termux, with gboard.

I don't use LSPs cause CBA but I only use Python and C and maybe occasionally bash for homelab stuff and I don't have large projects (😭).

If I'm doing any ML stuff from scratch (not refining or writing API for local llm model or integrating it with another API but just building classifiers etc) for fun I use Jupyter. Such a wildly different way of coding honestly ngl it's wild, but great when you need to document what you're doing.

At uni I used to use fucking Visual Studio with C# and Netbeans with Java, but I learned it pretty well. I don't think they ever even taught us how to run code outside those 😂

At work I use gedit and gnome terminal for navigation cuz it's company time unless I'm personally interested in what I'm doing.

[–] QuizzaciousOtter@lemm.ee 9 points 18 hours ago* (last edited 18 hours ago)

I use Neovim. It feels like a second nature after using it for years. I love how effortless the interaction with the editor is after you have spent hundreds of hours learning it. I have no reasonable arguments to convince anyone to do that though. I just do it because I enjoy the hell out of it 🤷‍♂️

[–] jeffhykin@lemm.ee 19 points 23 hours ago* (last edited 14 hours ago) (1 children)

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 4 points 21 hours ago (1 children)

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 4 points 20 hours ago* (last edited 20 hours 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

[–] WhosMansIsThis@lemmy.sdf.org 30 points 1 day ago

Do you have a minute to talk about my lord and savior VIM? Wanna see my dot files?

[–] inzen@lemmy.world 4 points 17 hours ago* (last edited 17 hours ago)

My editors

  • Professionally I use Jetbrains stuff (intellij, pycharm, etc).
  • At home I use Neovim because I like to have lsp support, I'm too cheap to pay for IDE's and I dislike VSCode for personal reasons. For quick edits I use default text editor e.g. kate/gedit.

My opinions on learning new editors

  • If you need to go fast now, use what you know best.
  • If you have time to learn just try whatever looks cool. Learning a new editor/way to edit text will broaden your horizons even if you don't end up using it.
[–] RandomVideos@programming.dev 3 points 16 hours ago

I use the godot integrated code editor, but i am debating switching to writing the code in google slides and copying the text into notepad in a virtual machine

[–] morrowind@lemmy.ml 40 points 1 day ago (5 children)

I keep hearing about how modal editing is faster and I would like to switch to a more performant editor.

Honestly I've yet to hear a good argument for this. It feels like such a major investment to switch to vi-like editors, I need a pretty good argument before considering it

Also a good argument for "why does it matter"? Speed of editing is rarely a bottleneck when editing code. If it is, you might want to consider why your code is so verbose and repetitive to make it so

[–] AdamBomb@lemmy.sdf.org 12 points 1 day ago

In my personal experience, it’s a little faster but not a huge speed difference. However, it’s much more pleasant and ergonomic. I enjoy the act of modal editing much more than modeless.

[–] pooberbee@lemmy.ml 16 points 1 day ago

Modal editing for just raw text input would actually be slower, because you also enter and leave Insert Mode. I find it's very fast and powerful for navigating around the text, which you probably do a lot more than actually editing it. And when it does come to editing, there are a lot of higher-level tools (at least in Vim) for accomplishing things more quickly, like the 's' command and 'q' macros.

I think getting into a mental "flow" state is really valuable, and muscle memory is important for being able to stay there. If your muscle memory is to navigate around using the mouse, that's great, but Vim feels faster to me.

[–] sping@lemmy.sdf.org 5 points 23 hours ago (3 children)

I used vi for a few years so have the muscle memory and the sole advantage in my perception was that everything is simple typing with hands remaining in the home keys position (except Escape, ironically).

So it's more relaxed if you find using modifiers onerous, but I don't find Ctrl or Alt significantly worse than Shift, and I don't find it any worthwhile advantage.

load more comments (3 replies)
load more comments (2 replies)
[–] yogsototh@programming.dev 6 points 20 hours ago

Fresh from university I found a job with terrible keyboards. After about 4 months I started to feel constant pain in my wrists. I then switched to vim.

And it solved my wrists issue. But also, I discovered a way to edit text that was so much optimized fat beyond my expectations.

I wrote this article for people that would like to familiarize with vi keybindings.

https://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/

[–] mholiv@lemmy.world 7 points 21 hours ago

+1 for Helix. Selection then action always made more sense to me than action then selection.

[–] DirigibleProtein@aussie.zone 18 points 1 day ago (1 children)

vim with appropriate syntax highlighting, or kate

[–] troyunrau@lemmy.ca 6 points 19 hours ago

kate

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

[–] FrostyPolicy@suppo.fi 30 points 1 day ago (5 children)

I use Jetbrains' products for all my coding needs.

[–] micro@programming.dev 5 points 15 hours 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.

load more comments (4 replies)
[–] uthredii@programming.dev 24 points 1 day ago* (last edited 1 day ago) (5 children)

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.dev 9 points 1 day ago (1 children)

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.

load more comments (1 replies)
load more comments (4 replies)
[–] azolus@slrpnk.net 6 points 21 hours ago* (last edited 12 minutes ago) (1 children)
cat << EOF > file.txt
# [[content here]]
EOF

On a more serious note: Neovim for quick file-edits, doom-emacs as my IDE.

Doom-emacs does most of the stuff you are already using out of the box, is highly configurable and it lets you use vim-keybindings. It's also free (as in freedom) software!

[–] brian@programming.dev 2 points 1 hour ago

this, evil is the real 4th generation vi

[–] Shanmugha@lemmy.world 13 points 1 day 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?

[–] jjjalljs@ttrpg.network 2 points 18 hours ago

I use pycharm at work for most things. Work paid for it. It has some nice stuff i like. I'm sure other editors do all of this, too, but nothing's been causing me enough pain to switch

  • Database integration. Little side panel shows me the tables, and I can do queries, view table structure, etc, right here
  • Find usages/declaration is pretty good. Goes into library code, too.
  • The autocomplete is pretty good. I think they have newfangled AI options now, but the traditional introspection autocomplete has been doing it for me.
  • Can use the python interpreter inside the docker container
  • The refactor functions are pretty good. Rename, move, etc
  • Naive search is pretty good. Can limit it to folders, do regex, filter by file name, etc

It does have multiple cursors but I've rarely needed that.

I use sublime for quick note taking. Mostly I like that it has syntax highlighting, and it doesn't require me to explicitly save a tab for it to stay open

[–] UraniumBlazer@lemm.ee 11 points 1 day ago (3 children)

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 16 points 1 day ago

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

load more comments (2 replies)
[–] bitchkat@lemmy.world 2 points 19 hours ago

Mostly emacs, vi, or what IDE I happen to be using like Eclipse.

[–] AbelianGrape@beehaw.org 1 points 16 hours ago* (last edited 16 hours ago)

I use vim, or spacemacs with evil mode (emacs distribution with sensible shortcuts and vim emulation). Or VSCode with spacemacs emulation.

You will pass your current productivity in less than a month. All of the things you describe are easily done in VSCode with vim emulation (I prefer the full spacemacs emulation but it's not actually a huge difference). You won't have to move your hands away from the normal typing spot on your keyboard -- no home and end, just 0 and $. No control+arrow keys, just w and b (or e or even more motion options). Highlighting is as easy as v and then motion commands. And there are so many more useful things that vim (and vim emulation) make simple and fast. Orthogonal VSCode features like multi cursors still work.

[–] 0101100101@programming.dev 3 points 21 hours ago* (last edited 21 hours ago)

Amateurs. I use butterflies.

https://xkcd.com/378/

load more comments
view more: next ›