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?
Neovim genuinely makes me happy. I love it to bits.
I use VSCodium atm.
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.
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 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.
I’m still learning to code, but I tried out a bunch and I’ve liked using Vim, VScodium and Pycharm.
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.
NeoVim plus tmux.
Great multi dimensional way of operating. You have access to the terminal and your ide.
It’s beautiful
vscode + whatever connection plugin you need + vim plugin
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.
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.
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 🤷♂️
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.
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