How to quickly get started at using and learning Emacs [closed]

There are all sorts of advantages to using Emacs, but for someone comfortable with the usual Win32 applications it comes with a wall-like learning curve. With most other editors it’s possible to just start using them and then learn about their other features and enhancements as you go along.

How to just get on with using Emacs straight away, with the aim of reaching that point where you actually prefer to use Emacs over other editors or applications?

Edit - To try and clarify the question: I’ve done the tutorial, read some docs, etc. then soon after when I’ve wanted to quickly edit some text it’s been easier to just use another editor, that I already know. What do I need to do so that not only I don’t just go for another easier editor, but that I actually prefer to use Emacs, and how to get here as quickly as possible? What if any are the training wheels for Emacs?


The biggest thing about learning how to use Emacs is ... (drumroll please) learning how to use Emacs.

Okay, okay, okay. It's a silly answer, and it's a tautology, but it's true. If you start up Emacs, and think to yourself "How could I find every instance of the word 'foobar' in my source tree?" the worst thing you could do is hit Alt + Tab and visit Google.

Seriously.

Learning the help system and how it works is the best thing you can do. It's so nice to just hit C-h a find, and suddenly get all the information you need, right at your fingertips.

The next best thing you could do is install a wonderful little package called Icicles which has some seriously groovy completion functions. After you get it installed, just know that anytime the minibuffer is asking for some kind of input, you can now use regular expressions.

How would this apply to finding every file in your source tree? Well, you'd hit M-x, and then type "find". After that, you could hit (for instance) Shift + Tab and Icicles would kick in, finding every command that prefixes with "find". Alternatively, you could do M-x .find. and it would give you any command with find in it.

Build a cheat sheet. Just keep a saved buffer somewhere that has all of the keyboard shortcuts you use frequently in it. Remove the ones that you know off by heart, and pick up new ones. In most cases when you do a M-x command, the message buffer will tell you what the keyboard shortcut was for that command (if there was one).

Learn. Keyboard. Macros.

Learn. Emacs. Lisp.

Steven Huwig's idea of using some killer applications is a good one. Emacs is easier to use when you want to use it. For me, it was Planner Mode. (I've just moved to Org-mode, and it's even better.)


  • spend 20 minutes running the tutorial

    ctrl-h t

That will get you to the point where you can be productive (and that "meta" key that you will read about is probably either Escape or alt).


I think it is easiest to find a "killer app" or two that just works best in Emacs. For me, it was the SQL editing and interaction mode for Oracle. Once you're already using Emacs for this killer app, then it will be more attractive to just open up other documents in Emacs rather than another editor.

Potential killer apps:

  • SQL editing and interaction modes
  • nxml-mode
  • AUCTeX
  • CPerl mode (best Perl mode there is)
  • PCL-CVS
  • SLIME
  • js2-mode (Javascript)

Learning to use Emacs effectively is inherently a slow process, but it's worth it.

Set up a .emacs file right away. You'll want to customize it quite a bit. It sounds silly, but having some kind of source control on that file will help, too.

To make it easier to find out about Emacs' innards, add to your .emacs:

(defalias 'ap 'apropos)

Then when you want to see if there's a command to do "something", type "[Alt-x] ap [enter] something [enter]". Emacs has its own name for stuff, so it can be hard to find things sometimes ("yank"? Seriously? Call it "cut" like everyone else!)

"[Ctrl-h f] function-name [enter]" looks up the help for that function.

"[Ctrl-h m]" shows you details about the current mode, like the keybindings specific to that mode.

Learn to use Ctrl-s and Ctrl-r for incremental search. All text editors need to come with this feature.

Add keybindings to your .emacs like:

(define-key global-map (kbd "M-z") 'redo)
(define-key global-map (kbd "C-z") 'undo)

Get the redo.el package to make Emacs' redo suck less.

iswitchb-mode is invaluable. It lets you have dozens of buffers open at once and switch between them in a blink of an eye. Set up iswitchb and add to your .emacs:

(iswitchb-mode)
(define-key global-map (kbd "M-RET") 'iswitchb-buffer)

To evaluate an emacs-lisp expression, type the expression into a buffer, put the cursor just after it, and type "[Ctrl-x Ctrl-e]". This lets you experiment with different customizations easily.

Remember, you don't have to let go of ctrl when typing a sequence like that.

See where a string occurs in a buffer with the "occur" function. Here are some handy functions and keybindings for that:


(defun word-at-point ()
  (thing-at-point 'word)
  )

(defun word-at-point-or-selection ()
  (if mark-active
    (regexp-quote (buffer-substring (mark) (point)))
    (concat "\\")
    )
  )

(defun find-word-at-point ()
  (interactive)
  (occur (word-at-point-or-selection))
  )

(define-key global-map (kbd "C-o") 'find-word-at-point)

(define-key isearch-mode-map (kbd "C-o")
  (lambda ()
    (interactive)
    (let ((case-fold-search isearch-case-fold-search))
      (occur (if isearch-regexp isearch-string
               (regexp-quote isearch-string))))))

My ideas on how to come up to speed faster:

  1. Find another Emacs user and watch them a few minutes every day
  2. Have the Emacs user watch you (and provide feedback)
  3. Find more Emacs users and repeat steps 1&2
  4. Subscribe to the planet emacsen feed to see what other Emacs folks are learning
  5. Follow the emacs tip of the day twitter
  6. Try to answer folks Emacs questions on SO

I've been using Emacs for 15+ years and I learn a new thing every day by doing the things above.