Coders or lemmy, what editors do you use? Is it worth learning a new one?
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?
I switched to helix last year after over twenty years of vim. I really like helix, but it did take some getting used to. Using multiple cursors instead of repeated commands etc
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.
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
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.
vscodium. Easy to use for beginners (i'm a beginner too), fully open-source, all microsoft tracking binaries removed. Aviable for Windows, Linux, macOS, darwin, propably bsd, or even as a webview, and supports a lot of architectures. Great for intrepeted languages, but supports compiled ones too
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.
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.
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:
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 🤷♂️
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?
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.
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.
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.
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.
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
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!
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.
I've used everything, vim, nvim, emacs, visual studio, vscode, sublime, codeblocks, android studio, xcode, bloodshed, intellij, eclipse, VB, geany, dreamweaver, qt, atom, and cursor (even though it’s really just a plugin)
It doesn't matter. It will never matter. I use vscode today because it handles everything I throw at it and it's easy to make extensions for. Or cursor if I'm feeling lazy, the agentic mode with claude is pretty damn good if your codebase is well established.
Don't get hung up on the editor, just use the tools available to get the job done, at the end of the day programming is converting concepts to text.
Throughout my career, I have used (in no particular order)
Eclipse (as Android Studio)
IntelliJ (as Android Studio)
SublimeText
VS Code
IntelliJ (as IntelliJ)
various CLI editors when sshing into servers (vim, nano, a few others)
Switching your muscle memory takes a long time, which is why you have things like spacemacs, or different keybind presets for almost all of these editors.
There is more value in understanding how to extend and customize your editor than in searching for a new one. Use whatever your workplace provides the best support for, and then customize it from there.
VS Code with your favorite plugins is pretty fantastic for any editing in my experience. I've tried others and they do seem to work well, but not well enough to warrant switching, and they often come with quirks that are just annoying enough to make me want to switch back.
I suggest trying others to know what's out there, even if you ultimately end up back on VS Code.
I've moved on from vim to neovim, and I think I'll continue using something in that family in the future. It's a pretty stable experience overall, but the inclusion of LSPs and tree-sitter have been good improvements too.
Ultimately editors are tools, similar to keyboards, os-es, screens, chairs, shoes and so on. There are some objective quality differences between a well-constructed tool and some slapdash nonsense, and there are a huge amount of subjective quality differences. What suits me may not suit you, and vice versa.
It's generally good to try out some new (to you) stuff and see if you like it. If you do, great; if you don't, well, now you know. I think my worst experience was with Acme (or Wily? can't remember), during a phase where I experimented with Plan 9 stuff. Ultimately very not my cup of tea, but apparently Rob Pike (who made it) and some other gophers still enjoy it? Which is good for them, just like it's good for me that I can choose not to use it. It's just personal tastes, and I still think it's good that I gave it a go.
The debate over holding down modifier keys vs modes is also a part of the Emacs vs vi debate from many decades ago. There might be some statistics for what works best for the most people now, but again, use what suits you. And try some new stuff when you get curious, it's generally good for you.
@verstra I use Jetbrains for pretty much anything except C++, their editors are the best. I use it for PHP, Go, Java/Kotlin, C#, databases, Typescript and I'm probably missing something.
I've always been skeptical that optimizing text input speed would make a significant difference to overall performance. IMO if you are unhappy with your setup then look around but if you're not you don't need to have FOMO about it.
I switched to and exclusively used vim for about a year. I switched back to Sublime one day, and found I was like 10x more productive and comfortable.
Just use the editor you like. There's no right or wrong answer!
... And btw, Sublime 4 has improved LSP support. Just install the base LSP plugin + plugins for the languages you want. Some even give the option to install the LSP server automatically if if's not detected.
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
But really, there's no single best option here - use whatever works the best with you and the tech you're targeting. The same advice applies for programming languages, libraries and just about everything in tech
I mainly work with C#, where I use Visual Studio. I think I mainly changed bindings for expand selection, and go to definition, declaration, implementation (ALT+A/+S/+D). All other bindings work out for me.
Cursor and selection "jumping" with CTRL and SHIFT, and using multiple cursors is a regular occurrence for me. I largely keep using keyboard, but for navigating I do often switch to or combine it with mouse.
When it's not C#, it's often VS Code, or otherwise Notepad++ for non-IDE simple editing. For even simpler quick edits I also use Double Commanders integrated text editor.
I use TortoiseGit, and its diff editor. I sometimes make changes there too. I also occasionally use KDiff or Winmerge.
I think whether it's worth to learn a new one should be determined by 1. what are your pain points/shortcomings, 2. what are the promises or your hopes, and 3. testing it out.
If you explore a promise and quickly find it not useful to you, it may be easy and simple to dismiss a switch without investing more.
I just use Vim out of habit. I've been using it as my main text editor since I was like 13 or so, maybe more like 10 I don't really remember. It works perfectly well for the vast majority of my use cases. I use Jetbrains IDEs if I feel I need the power of a full IDE. Jetbrains has an IdeaVim plugin if you want it to be a modal editor, or if your fingers are accustomed to Vim keybindings.
I used to use vim but imo it's not worth the time it requires to configure to get working properly. These days I don't code without a debugger so if there's not a good way to set breakpoints I don't even start
I use JetBrains Rider for dotnet (with Vim emulation), VS Code for general misc code editing (with Vim emulation), and NeoVim for quick in-terminal edits and Git workflows. I even have vi-mode enabled in my terminals, but I haven’t bothered trying to do it in browser yet.
My experience is that modal editing is only a little faster, but it’s much more comfy, even fun! I enjoy coding with modal editing much more so than modeless. Being able to zip around the code without having to move my fingers to the arrow cluster just feels nice.
I've tried to learn Vim in the past but IMO it is not worth it at all. In a world without multiple cursors... sure, maybe. With multiple cursors? No way. I can can edit just as fast as I've seen any Vim user do it, and without having to remember a gazillion mnemonics and deal with the silly modal thing.
Multiple cursor editing even has some significant advantages over Vim style, e.g. it's interactive, so you can do your edit gradually and go back if you make a mistake. Rather than having to write a complex command and only finding out it if works at the end. (If you've used regex find & replace you'll understand that problem.)
I'll probably get downvoted for this since Vim is kind of a cult, and Vim users get a sense of superiority from it. Kind of like audiophiles - they don't appreciate it if you tell them their £10k valve amp doesn't actually sound any better than your £1k digital amp.
For editing on remote computers I use VSCode remote or Micro for quick tasks.
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.
Helix’s is amazing. It’s pretty simple and it has tons of out of the box features like lsp support. I switched from vim and never looked back tbh. It’s far superior
Modal is incomparably more comfortable, that's the main benefit.
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
Do you imagine vi-based editors don't let you use your mouse or what? Go through vim-tutor, learn the basic shortcuts you need, and you're back to your old productivity in a few days. You don't need to learn vi" to select a string, you can just use your mouse.
No offense to you or your habits, but C-arrow is an idiotic movement scheme. If you have to leave the home row to move around the text, you fucked up.
nano is the best (imho) for up to medium size files. It’s preinstalled in most Linux boxes , it’s simple and flexible enough, takes a minimal amount of time to learn basic for keys and then use them all the time
Vscode. I am surprised to see a lot of people still use sublime text. I was a long hold out on that one but it's just so much worse than vscode in every way.
Depends on what device I'm using. On my tower(s), I'm typically reaching for Rider, Pycharm, or Zed. On my laptop(s) it's pretty much always Helix or Zed. On servers it's vim 100% baby. I've gotten pretty comfortable working with theses tools, so I haven't really needed to look into alternatives at all.