Remix.run Logo
ramon156 3 days ago

Last time I tried I felt like an old fart using emacs. None of the keys felt natural

That said, i did not give it a fair shot. Does anyone have any good resources to get started? E.g lazygit has a good 15min vid to get u up to speed

ajross 3 days ago | parent | next [-]

> None of the keys felt natural

The key bindings are sort of the least impactful idea behind the editor. The defaults are indeed ancient and opinionated, and don't match well with what other environments ended up adopting. They do work well for the most part if you want to take the time to learn them, though. But everyone has their own set of customizations[1], usually going along with a preferred set of physical key remappings[2]. Lots of folks use modes like Evil to get vi bindings, etc...

The point is to think hard about how you use the editor and start working on making the editor work the way you need it to. Binding fluency will fall out naturally.

[1] For myself, I'm mostly default. But for example I dislike the defaults for C-t and C-z which IMHO are footguns, and remap those to "top/end of buffer", functions I do use a lot and whose defaults are clumsy.

[2] Ctrl to the left of A, obviously. But also the key below '/' really wants to be Meta and not whatever else the manufacturer put there.

skydhash 3 days ago | parent | prev | next [-]

Everything in Emacs exists under the “M-x” keybind (M stands for Meta which is usually Alt on linux and Option on macOS). Because everything you can do is a command (which are just normal functions that have been annotated). Then you have bindings to directly execute those functions instead of going through a prompt.

There’s some terminology to learn to make sense of the commands. And the default keybindings are also useful to learn (and you can find them in anything that uses the readline library and equivalent: Bash, zsh, psql,…. You can also find them in macOS text widgets).

But the thing is that Emacs have a lot of commands. They are assembled into packages and due to the nature of Elisp, can be edited and patched live. While it easy to get started (videos on youtube, the emacs documentation, the “Mastering Emacs” book), After a while, you config can become alien to anyone else. But it will stay discoverable as Emacs have a great help system.

wpm 3 days ago | parent [-]

"and you can find them in anything that uses the readline library and equivalent: Bash, zsh, psql,…. You can also find them in macOS text widgets"

If anything, this is what pushed me towards emacs vs having to learn separate keybinds for vim/neovim. I wanted a terminal based TUI text editor that followed the conventions of keybinds I already understood. I switch from Mac to Windows to Linux quite often, and I am constantly hitting ^+a to get to the front of the line and constantly frustrated when it doesn't work on some OS or only works in some context. It's fantastic on macOS, ^+w does the same thing in my terminal that it does in my text editor that it does in my web browser that it does in my slide deck. It also works because macOS moved the common "CUA" shortcuts for the GUI apps to command/Super, so Ctrl isn't overloaded with shortcuts, leaving things like Ctrl+c to send a SIGTERM and Command+c to copy without fuss. Plug in a keyboard to an iOS device and they work over there most of the time too!

I wish it wasn't such a ballache to replicate this on Linux, even if the various forms of text fields in the GUI frameworks don't respect it.

dillydogg 3 days ago | parent | prev | next [-]

I think the most straightforward way to a solid Emacs config is to use emacs-bedrock [1]. It's a very well curated set of packages that enhance the basic experience. It does leave you with plenty of room to fiddle, which is the beauty of Emacs to my mind. I personally use doom because I built my config on it for years, and am happy with my current setup, but if I started again I would go with emacs-bedrock to keep it more minimal.

[1] https://codeberg.org/ashton314/emacs-bedrock

chimprich 3 days ago | parent | prev | next [-]

I felt like that when I started using Emacs, about 25 years ago. It turned out to be worth it, though.

Emacs has its own tutorial (Help -> tutorial from the menus), which is a pretty good introduction. Learning to get help from Emacs itself is a bit of a learning curve, but really beneficial.

Learning to the use the help tools properly was something I didn't get around to for years, but I wish I had sooner.

massysett 3 days ago | parent [-]

Emacs says it is “self-documenting.”

Years ago it was remarkable for software to have docs built-in as Emacs does.

Then for many years it was standard for software to have help files, and it seemed anachronistic for Emacs to loudly proclaim it is self-documenting.

Now in the Web and LLM age, much software doesn’t even try to have built-in help or even much documentation, and it’s again remarkable that Emacs is self-documenting, especially the part of Emacs that users can program.

mschaef 3 days ago | parent [-]

> Then for many years it was standard for software to have help files, and it seemed anachronistic for Emacs to loudly proclaim it is self-documenting.

Emacs' notion of self documentation refers to something slightly different than the fact it has online help files. The help facilities can query the Lisp runtime for things like functions and keybindings. These update dynamically as the system is reconfigured. The result is something that isn't quite as cleanly presented as an online help document, but has the benefit of being deeply integrated into how the system is actually configured to behave at the moment. Very cool, and very much dependent on the open source nature of emacs.

SoftTalker 3 days ago | parent | prev | next [-]

Emacs has a built-in tutorial, have you tried that?

iLemming 3 days ago | parent | prev | next [-]

> lazygit has a good 15min vid to get u up to speed

Doom Emacs install from scratch takes less than that.

cmrdporcupine 3 days ago | parent | prev [-]

You could try cua-mode, which binds keys to more typical windows/mac/cua contemporary bindings.