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?
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 used to use VSCodium, but in my quest to touch the mouse as little as possible I switched to Neovim.
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.
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.
I think there’s something to be said for shaking up your environment periodically as well and trying new things. Sure, there’s a week where you edit at a snails pace, followed by a month where you edit a bit slower than normal, but different tools really do have different pros and cons.
For the code bases I’ve worked in, this evolved from necessity as the code files were so large many editors were struggling, the rules for the style so custom that editors can’t be properly configured to match, or the editor performance in general was questionable.
I went through a journey of sorts from IDEs to Electron based editors to Emacs and currently am working with Kakoune (and I’ve passed over a bunch of other editors like Sublime, Helix, and Zed that couldn’t meet my requirements or didn’t match my sensibilities – even though a thing or two here or there really was excellent). Pretty much every change has been the result of the editor pain points that couldn’t be addressed without actually working on the editor itself.
Netbeaners! Unite!
A coworker has told me that in a previous job, he was talking to an intern and mentioned IRC and intern asked what was that. He told him that it is the “old instant messaging”, which another senior coworker overheard and chimed in that “no, IRC is the new messaging thing”.
If someone would be asking be what netbean is, I’d say “an IDE from the old generation of editors”, but I guess that is all relative :D
seeing mscode/codium/vswhatever makes my brain hurt. geocities of code. now i am using Zed. problem solved.
Why geocities of code?
vim with appropriate syntax highlighting, or kate
kate
I use Kate – part of the KDE project ecosystem (for anyone else wondering) – on all platforms, including Windows. So worth it.
I use Jetbrains’ products for all my coding needs.
I used to use Jetbrains when I was using C# (mostly stopped now), because it was better that VS and tooling elsewhere is mediocre, on purpose by ms. But beyond that I don’t see the point. I say that as someone who has it for free through a student license. They’re such heavy editors, only kinda cross language, extension ecosystem not as good as vscode.
Great default keybindings though, I’ve adopted a lot of them elsewhere too
Do you use “home” “end” “ctrl-arrow” or any other interesting keybindings?
ctrl shif s - settings alt j - select next occurrence double tap shift - search functions and files
I’ll add shift + f6 for refactor rename and ctrl + 6 for redefining your function i.e. add/remove parameters and/or return value.
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.
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.
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.Hey have you tried using Vim? I like it better than Emacs
Helix because it’s easy to setup and hassle free, and it runs well on my 2009 ASUS Eee
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)
How do you debug?
Depends on language and platform ;) Ghidra, strace, printouts gets you quite far. The only language I regularly step would be assembler.
Ghidra seems intense when gdb is right there. Lol. What advantages do you see in using Ghidra on your own code? It seems interesting.
A lot of what I do (hw/fw hacking) involves running Ghidra on code by others so it’s just a tool I know well. As I mentioned I seldomly step through my own code while debugging high level languages.
Gdb doesn’t support arm macs. I’ve switched to lldb.
Nice. Does it work well for you? How does it compare?
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’s doesn’t sound like what you’re looking for.
Doom Emacs and lazyvim nvim.
Don’t know about helix, and don’t really care.
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.
Just go through vim tutor…
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
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.
Input speed is not “just” input speed. Note: I’m not about to argue for or against modal editors, I just want to answer: why is input speed really really really important, when (we agree) its not a big percent of total time.
5min at 80mph over a bumpy dirt path, ripping around turns is very very different than 5min of flat smooth straight driving. And not just because of effort.
A senior and junior dev could spend the same amount of time to rename a var across 15 files, move a function to a new file, comment out two blocks, comment one back in, etc. But. When I try to have a conversation while they do that, or when I change my mind and tell the junior to undo all that, its a massive emotional drain on the junior.
But effort isn’t the whole picture either: speed is a big deal because pausing a conversation/mental thought for 5 seconds while you wait to finish some typing, is incredibly disruptive/jarring to the thought-process itself. That’s how edge cases get forgotten, and business logic gets missed.
Slower input is not merely input time loss, it also creates time loss in the debugging/conceptualizing stages, and increases overall energy consumption.
If the input is already fast enough that there’s no “pauses in the conversation” then I’d agree, there’s not much benefit in increasing input speed further. BUT there’s almost always some task, like converting all local vars (but not imported methods) in a project to camel case, that are big enough to choke the conversation, even for a senior dev. So there’s not necessarily a “good enough” point because it’s more like decreasing how often the conversation gets interrupted.
That’s a good argument. The editing speed is not the limiting factor in my workflow.
Honestly, I think my interest for modal editing is a bit irrational. Maybe I don’t want to be a normie, using the default keybindings :D
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.
I read that, originally, Caps Lock was supposed to be the mode-changing key. For some historical reason that changed with Escape.
It’s more that the position of the escape key changed. This was they layout of the keyboard vi was written on. Note the arrow keys too.
https://en.m.wikipedia.org/wiki/Vi_(text_editor)#/media/File:KB_Terminal_ADM3A.svg
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.
I’ve been using Vim for over 10 years. The first few years I used it badly. Later I took time to really learn it. Now I can use it fairly decently, but I still learn new things every now and then.
It feels like a really good investment. It’s been around forever, it’s gonna be around forever, it’s installed on almost all computers, and you’re going to be forced to use it at some point or another.
I really enjoy being able to go to any computer and starting up a familiar editor, without installing or configuring stuff. I also use a very vanilla Vim. If a coworker’s laptop or some server has a different Vim config than mine, I can usually do
vim -u NONE
to get back to a familiar place.Mostly emacs, vi, or what IDE I happen to be using like Eclipse.