Emacs has a notoriously steep learning curve, but even after all of these years there are advantages too numerous to name!

A few:

  • Open source
  • Can run in a remote terminal
  • No AI unless you add it
  • Key bindings are useful in other programs (and sometimes at the OS level)

It is also, by design, extremely configurable. Lately I've given over most of that work to the Doom Emacs configuration framework.

As far as the basics, these are the commands I use 90% of the time:

Opening and closing files

keysaction
C-x C-fopen a file
C-x C-ssave the current file
C-x kclose the current file (kill buffer)
C-x C-cexit Emacs

Moving around

keysaction
C-abeginning of a line
C-eend of a line
C-fforward one character
C-bbackward one character
C-ddelete one character forward

Selecting/cutting/pasting

keysaction
C-spaceset a mark
C-wcut marked region
C-kcut to the end of the line
alt-wcopy marked text
C-ypaste

Bonus keys

keysaction
C-c p ?find references in a project
C-c p ssearch for a string in the project files (requires ripgrep)
C-c p aswitch between the currently open .c and .h file
C-x bswitch between open files
C-c p ffind file in current project