Coders or lemmy, what editors do you use? Is it worth learning a new one?

https://programming.dev/post/25194369

Coders or lemmy, what editors do you use? Is it worth learning a new one? - programming.dev

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 use Jetbrains’ products for all my coding needs.
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.

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

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.
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

I use neovim but i think helix is honestly better ootb.

I took a look at Helix when I was trying to learn vim and found it very easy to get started with, but was concerned about missing out on learning more standard vim bindings and functionality.

I found LazyVim + NeoVim got me pretty much the same experience without diverging as much from vim. Mostly I appreciate having access to a cheatsheet for commands.

was concerned about missing out on learning more standard vim bindings and functionality.

What do you mean? Do the standard vim bindings have some specific quality that you are after? Or do you work with many different servers and would have to use what ever editor is installed there?

Well I was mostly looking to learn vim and was trying to use Helix as a way to do that because it looked like vim, but with a commands window that popped up to help learn the commands. They’re upfront about making some breaking changes from vim though, and while I may not need to jump into a bunch of different machines that often I do like the flexibility of being able to hop into vi, vim, nvim, or some GUI editors with vim bindings relatively comfortably. So I found that LazyVim was more what I was looking for personally and nearly as easy to work with out of the box.

I am glad to see the project seems to be going strong. That was another minor concern of mine, there’s little risk of vim going anywhere, but I remember being excited about the Atom editor a while back and that just kinda faded away. If it passes the test of time I’d be happy to try it again in the future. I figure it would be easier to go from vim -> helix than vice versa.

Vscode has helix bindings.
If I’m working on a Qt project, I use Qt Creator, for a Java project I use Eclipse, otherwise I use VSCode.

Helix is absolutely wonderful.

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.

Yeah, keybindings are well thought out. The most off-putting thing of default vim is that there are about 5 different “delete” commands. One for a character, one for the whole line, one for selected text, one for end of line. In helix, this is all just “delete selected text” and then “x” is for selecting a line. Make so much more sense.

MicroEmacs www.jasspa.com

No unicode support though. For that try

bionic.bloovis.com/cgit/microemacs/

… but for work I still use Eclipse (sigh)

MicroEmacs JASSPA Distribution

Jasspa Home

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.

That’s how I ended up with a latex plugin for intellij

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.

I use either the default GUI text editor from each distro or Vim with stock configuration. I must say it does take surprisingly little to get up to speed with Vim, but I still struggle with specific things like moving code across files.

I haven’t changed any keybindings in firefox, but heard qutebrowser is nice for such use case.

VS, VSCode, Sublime, Neovim,

I use Sublime for short scripts in Python, VSCode for angular, VS for c# and neovim for elixi, elm and all new stuff I learn on my own.

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

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.

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

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.

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, TAB was supposed to be the mode-changing key. For some historical reason that changed with Escape.
If I went back to the vi interface for some reason I’d at least use ctrl-[. I dislike lifting my hand way more than using modifiers.
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.
en.m.wikipedia.org/wiki/Vi_(text_editor)#/media/F…
vi (text editor) - Wikipedia

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.

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 them… because (if they’re fast) they’re driving 80mph over a crappy dirt road.

The input speed isn’t a big deal because its a large chunk of time, it’s a big deal because pausing a conversation/mental thread for 5 seconds while you wait for some typing to finish is incredibly disruptive/jarring to the thought process itself.

Those mental pause-and-resumes cause untold number of bugs, and THAT is where the real time sink happens.

If you’re already at the point where there’s no “pauses in the conversation” then I’d agree, there’s not much benefit in increasing input speed on its own. BUT there’s almost always some task, like converting all vars (but not imported methods) in a project to camel case from snake case, that are big enough to choke the conversation even for a senior dev. Increasing input speed is often decreasing how often the conversation gets interrupted.

Speed of editing is rarely a bottleneck when editing code

It’s not just that though, its moving around your code. Being able to jump between matching brackets, follow references etc. it’s just quicker and easier with a modal editor.

Well, I’ve successfully used LSP for Sublime Text before. Would probably still use it if I hadn’t transitioned to Neovim recently.
LSP for Sublime Text

I do still use sublime as a “note” app, where I a “cheatsheet” open with a bunch of common commands I need for our project + a todo.

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.

I recommend you use the tutor (hx --tutor) for a few minutes each day to learn the keybidings.

Helix

A post-modern modal text editor.

I happily use Helix for Rust, etc projects, and as a general editor. I switch back to VSCode for TypeScript/Svelte projects because the plugins make it more productive for me. I do miss the editing experience and need to check if there’s a VSCode plugin that lets me not confuse my muscle memory.

Helix was the thing that finally made me remap my caps lock key to esc.

I’ve recently taken to kakoune which was one of the inspirations for Helix.

It’s not as fancy (in terms of built-in features) out of the box, but it’s very performant, integrates with tmux well, and for the C++ and Python I’m writing I haven’t felt the need for much beyond token based word completion and grep.

The client server model it uses has really let me improve my tmux skills because I’m working inside of it more and using it for editor splits.

I don’t know if Helix does this, but I’ve also come to love the pipe operator (where you just pipe a selection into some external program and the selection gets replaced with the output, so you can use the e.g. the sort command to sort text). You can also pretty easily add in custom extensions via command line programs.

Ahhh nice, I have thought about trying out Kakoune as it supports plugins. Do you use many plugins/find them useful?

Helix does have a pipe command also.

I’ve mostly just tweaked the configuration and built my own comment formatter/reflow command based on the comment style at work.

It’s almost more about what it doesn’t have for me, because what I’ve run into a lot with trying newer editors is they try and manage the code too much and the code base at work has its own style guide that doesn’t match what the editor tries to do. So the editor might make me slightly more productive … until I find myself fighting with it every 3 lines because of auto formatting or some language server quirk.

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.

Yeah I agree, I like that aspect too!

On windows i use vscodium, on linux neovim.

As others say i think helix is cool, but the limited customization is kind of meh for me. I love the keybinds for it though.

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.

GitHub - lem-project/lem: General-purpose editor/IDE with high expansibility in Common Lisp

General-purpose editor/IDE with high expansibility in Common Lisp - lem-project/lem

GitHub

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

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.

That’s the thing: I do feel vscode being slow. On my work machine, it’s fine - it takes about two seconds to open a project from start. But on my older laptop, that’s a solid 10 sec before I can start editing.

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.
Gdb doesn’t support arm macs. I’ve switched to lldb.
Nice. Does it work well for you? How does it compare?
If you know gdb, you know lldb… it’s pretty much a drop-in replacement.
Panic Nova on macOS, VSCode on Windows, neovim in the Shell.
Nova

The beautiful, fast, flexible, native Mac code editor from Panic.

neovim. i much prefer the motions of helix, but there’s just some plugins i can’t live without.
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.
Have you tried ed?
I use the vi option or plugins for Sublime, PHPStorm, and Pycharm or whichever IDE I’m using. Works for chrome and Firefox too.
seeing mscode/codium/vswhatever makes my brain hurt. geocities of code. now i am using Zed. problem solved.