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 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?
I keep hearing about how modal editing is faster
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.
Do you have a minute to talk about my lord and savior VIM? Wanna see my dot files?
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.
Perhaps you want a touchscreen.
I learned basics of vim, I can recommend. But also, it takes time to master. And I’d put other stuff first like fundamentals of git (stashes, staging area, branches and rebase.)
Also, don’t underestimate using an IDE that’s popular, I had switched over recently and found it convenient when a colleague asks for help. I can’t tell them ‘oh yeah I know how to do that on my setup’ (though is valid…)
Like 3 years ago, I was into emacs, which I used with vi keybindings. Many extensions provided quality of life (tramp, magit, which-key) that others (vscode) only emulated and required hardware I lacked. Anyway…
If this is really about keys, go for gnu readline flavor instead of vi. I didn’t, and those are way more ubiquitous. Anyway, research that and make your own decision.
Ps, here’s a rabbit hole https://codeberg.org/ashton314/emacs-bedrock#emacs-bedrock
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 use Jetbrains’ products for all my coding needs.
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 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
Sublime Text.
The only thing I need from my editor is syntax highlighting and not be slow.
(Assembler, C, Python, Java and Bash are the languages I mostly work with)
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
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.
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.
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.
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.