Update

Starting point

Map

%3 install install starter-kit starter-kit install->starter-kit tutorial tutorial install->tutorial theme theme install->theme community community starter-kit->community customization customization starter-kit->customization customization->starter-kit customization->community shortcuts shortcuts customization->shortcuts elisp elisp customization->elisp completion completion customization->completion packages packages customization->packages emacsclient emacsclient customization->emacsclient customization->theme appearance appearance customization->appearance M-x M-x shortcuts->M-x shortcuts->completion notes notes shortcuts->notes snippets snippets shortcuts->snippets macros macros debugging debugging elisp->debugging use-package use-package elisp->use-package bisecting bisecting debugging->bisecting tutorial->customization conventions conventions tutorial->conventions tutorial->M-x help help tutorial->help concepts concepts tutorial->concepts editing editing tutorial->editing navigation navigation tutorial->navigation org-mode org-mode writing writing org-mode->writing outline outline org-mode->outline agenda agenda org-mode->agenda export export org-mode->export Org Babel Org Babel org-mode->Org Babel M-x->completion completion->packages packages->use-package coding coding packages->coding undo undo dired dired wdired wdired dired->wdired help->community strategies strategies help->strategies bookmarks bookmarks theme->packages appearance->theme faces faces appearance->faces concepts->undo windows windows concepts->windows notes->org-mode Denote Denote notes->Denote editing->macros editing->notes registers registers editing->registers shell shell editing->shell navigation->dired navigation->bookmarks navigation->windows navigation->registers kill ring kill ring navigation->kill ring compile compile navigation->compile TRAMP TRAMP navigation->TRAMP coding->compile shell->compile

Starter kits

If you:

  • need to hit the ground running, or
  • you're curious about what a more-fleshed-out Emacs experience is like, or
  • you're going in with significant experience with another editor, or
  • you're particularly curious about a very specialized use of Emacs

then a starter kit might be a good way to get started. Starter kits combine a lot of packages and configuration in a simpler install, so you can get started faster. The flipside is that because they can change default Emacs behavior a lot, it might be harder for you to ask for help or apply tips from general Emacs posts.

Here are some starter kits you might be interested in:

Awesome Emacs lists more starter kits and example configurations.

Many people start with vanilla Emacs, try out a starter kit or two to get a sense of what's possible, and then either learn how to further customize that starter kit or go back to vanilla Emacs but add some of the interesting concepts they picked up from the starter kit.

From here, you may want to learn more about:

Back to map

Finding community resources

Back to map

Customization

You can change a lot of Emacs behaviour through the Customize interface.

  • To explore the options you can customize, start with M-x customize different options.
  • To customize a specific variable, use M-x customize-variable. You can set things temporarily by using the Apply button or save them for future sessions with Apply and Save.

Things I recommend starting out customizing:

  • fido-vertical-mode: turn this on to get easier completion in the minibuffer; see completion
  • which-key-mode: turn this on to see help when you type keyboard shortcuts slowly; see shortcuts
  • make-backup-files: turn this off if you're bothered by the backup files ending in ~. Eventually, when you're more comfortable with Emacs, you can turn this back on and customize backup-directory-alist to put the backup files in one directory.
  • create-lockfiles: turn this off if you're bothered by the lock files starting with .#.

From here, you may want to learn more about:

Back to map

Shortcuts

Useful ideas/things to explore:

  • Keyboard shortcuts can have more than one keystroke (ex: C-h C-q)
  • When you know the first part of a keyboard shortcut but not the complete shortcut, use C-h at the end to see the available shortcuts. For example, to list all the shortcuts starting with C-c, type C-c C-h.
  • If you use M-x which-key-mode, pausing in the middle of a shortcut will show you a list of shortcuts. If you like that, use M-x customize-variable to save your which-key-mode setting for future sessions.

You may want to set your own shortcuts. This involves using Emacs Lisp. Don't be intimidated, this is a perfectly normal part of configuring Emacs.

Other resources:

At this point, people often wonder:

  • How can I use the same keyboard shortcuts used in other applications, like C-c to copy and C-v to paste?
    • You can use cua-mode to set up those shortcuts, but you may want to get used to the Emacs way of doing things because then you'll have a lot more shortcut key possibilities and it will be easier for you to follow other tutorials.
  • How can I remember all these shortcuts?
    • It can get overwhelming, so try to focus on getting the hang of just a few shortcuts at the time. You may want to use M-x to call commands by name, especially with completion. Also, quick help (C-h C-q) can show you the most frequent shortcuts and the menu bar (F10 if you're using the keyboard) lists other common commands. It's a good idea to take notes, too. You can use a sticky note near your computer, a paper notebook, or even a text file that you open in Emacs.

Back to map

Keyboard macros

Keyboard macros let you record and play back keystrokes. You can even save them as Emacs Lisp functions.

Back to map

Emacs Lisp

You can find out where your Emacs configuration by using C-h v (describe-variable) to look up user-init-file.

You can use M-x eval-region, M-x eval-last-sexp, or M-x eval-defun to execute parts of your code.

From here, you probably want to learn more about:

Back to map

Debugging

If there's a problem with your Emacs configuration file, starting Emacs with emacs --debug-init can be helpful. You can use M-x eval-region, M-x eval-last-sexp, or M-x eval-defun to execute parts of your code.

M-x edebug is very handy for stepping through Emacs Lisp code.

Back to map

Tutorial

You can get to the tutorial inside Emacs by pressing C-h t (that's Control+h and then t) or by using M-x help-with-tutorial (that's usually Alt-x then help-with-tutorial and then your Enter key). The tutorial will teach you conventions and basic shortcuts.

There are also some tutorials that cover basic concepts and navigation:

Back to map

Conventions

The Emacs tutorial (C-h t) will help you learn how to read how people write about keyboard shortcuts (C-, M-, C-M-, RET, etc.).

Back to map

Org Mode

Taking notes in Org Mode is nice because you can use hyperlinks. C-c C-o opens a link on Org Mode.

After you get the hang of that, you can learn how to use headings and subtrees to organize your notes.

Many people use Org Mode for writing.

Back to map

M-x

You can call commands by name so that you don't have to remember their keyboard shortcuts and so that you can call functions that don't have any keyboard shortcuts. M-x ("Meta x") is probably equivalent to Alt-x or Option-x or Cmd-x on your keyboard.

You'll probably want to set up completion.

Back to map

Completion

Try M-x fido-vertical-mode to turn on completion, and then use M-x again and start typing. If you like that, you can set that as the default with M-x customize-variable fido-vertical-mode. Click on Apply and Save (or go to it and press RET) to save it for future sessions.

If you're curious, you can explore packages for other completion systems such as vertico.

Back to map

Packages

Lots of people have shared Emacs Lisp packages to add new features to Emacs. The ELPA and NonGNU ELPA package archives are enabled by default. You can see the packages in those archives by using M-x package-refresh-contents to update the list of packages and M-x list-packages to list them.

From here, you might be interested in using use-package to organize your package-related configuration.

Back to map

use-package

Many people organize package-related code in their configuration file by using use-package. If you use use-package, it can be easier to copy stuff from those configurations. If you don't, you may need to translate some of the shorthand. For example, the :bind keyword can be replaced with global-keymap-set or keymap-set calls as appropriate.

Back to map

dired

If you use C-x C-f to visit a directory instead of a file, you can use Dired to navigate and manage your directory.

Also useful: find-dired, find-grep, dired-do-find-regexp-and-replace

Next steps:

  • You can bulk-rename or delete files from Dired with wdired (writeable dired).

Back to map

wdired

Want to do lots of renaming? Use C-x C-q (dired-toggle-read-only) in a Dired buffer to make it editable, make your changes, and then use C-x C-q to apply your changes.

Resources:

Back to map

emacsclient

You don't have to stop and start Emacs all the time. If you use M-x server-start or add (server-start) to your Emacs configuration, you can start the Emacs server. Then you can connect to it with emacsclient WHATEVER_FILE to edit the file, or emacsclient -c to open a frame without editing a file. On Windows, you may want to use emacsclientw instead. (Make sure it's in your path.) Use C-x # when you're done.

If you like that, you may want to consider setting the EDITOR variable to emacsclient (ex: export EDITOR=emacsclient in Linux or Mac OS X, or set EDITOR=emacsclient in Windows).

Back to map

Themes

The easiest way to tinker with the colours Emacs uses is to switch your theme. Use M-x customize-themes to select from the built-in themes. You can get other themes as packages.

Helpful if you're making your own themes:

Back to map

TODO Index beginner tutorials

This list is at https://gist.github.com/sachac/1748eb1d454e6e89e87bc27f58f6114f

There's actually a lot of stuff out there on installing Emacs, concepts (ex: buffers and frames), navigation and editing, using documentation, basic Org Mode, configuration, and Emacs Lisp. It'll be interesting to roughly categorize them, see where the overlaps are, and find good resources to recommend in each category.

other resources:

Support code

Source for this file: https://sachachua.com/web/beginner-map.org (you'll also need my code to inline SVGs from https://sachachua.com/dotemacs#org-inline-svg)

Back to top | E-mail me