Skip to content
Go to file


Failed to load latest commit information.
Latest commit message
Commit time


Kill & Mark Things Easily in Emacs

Travis CI build status

Provide commands easy-kill and easy-mark to let users kill or mark things easily.

Comments, bug reports and patches are highly appreciated.


easy-kill is a drop-in replacement for kill-ring-save. To Use:

(global-set-key [remap kill-ring-save] 'easy-kill)

After this configuration, M-w serves as both a command and a prefix key for other commands. M-w alone saves in the order of active region, url, email and finally current line (See easy-kill-try-things). As a prefix key:

  1. M-w w: save word at point
  2. M-w s: save sexp at point
  3. M-w l: save list at point (enclosing sexp)
  4. M-w d: save defun at point
  5. M-w D: save current defun name
  6. M-w f: save file at point
  7. M-w b: save buffer-file-name or default-directory. - changes the kill to the directory name, + to full name and 0 to basename.

The following keys modify the selection:

  1. @: append selection to previous kill and exit. For example, M-w d @ will append current function to last kill.
  2. C-w: kill selection and exit
  3. +, - and 1..9: expand/shrink selection
  4. 0 shrink the selection to the initial size i.e. before any expansion
  5. SPC: cycle through things in easy-kill-alist
  6. C-SPC: turn selection into an active region
  7. C-g: abort
  8. ?: help

For example, M-w w saves current word, repeat w to expand the kill to include the next word. 5 to include the next 5 words etc. The other commands also follow this pattern.

+/- does expanding/shrinking according to the thing selected. So for word the expansion is word-wise, for line line-wise, for list or sexp, list-wise.

list-wise expanding/shrinking work well in lispy modes (elisp, Common Lisp, Scheme, Clojure etc.), smie-based modes (Prolog, SML, Modula2, Shell, Ruby, Octave, CSS, SQL etc.), Org mode, Nxml mode and Js2 mode.

To copy the enclosing list in lispy modes, I used to do a lot of C-M-u C-M-SPC M-w. Now the key sequence is replaced by M-w l (save list at point) as shown in screenshot:

``M-w l``


easy-mark is similar to easy-kill but marks the region immediately. It can be a handy replacement for mark-sexp allowing +/- to do list-wise expanding/shrinking and marks the whole sexp even when in the middle of one.

(global-set-key [remap mark-sexp] 'easy-mark)


easy-kill is part of GNU ELPA and is also available on MELPA.


New things can be defined by following package thingatpt.el's convention, or by defining new functions named like easy-kill-on-THING-NAME. See easy-kill-on-buffer-file-name and easy-kill-on-url for examples.



  1. New user variable easy-kill-unhighlight-key.
  2. key D selects current defun name.
  3. Key SPC selects things in easy-kill-alist in turn.


  1. Key ? in easy-kill or easy-mark prints help info.
  2. M-w l can select the enclosing string.
  3. easy-mark learns exchanging point & mark.
  4. Key 0 now sets the selection to its initial size before any expansion.
  5. M-w l, M-w s and list-wise +/- now work in Org mode.


  1. - can move pass the first selection.
  2. +/- on sexp no longer change thing to list
  3. Mouse over the selection now shows description.
  4. Echo js2 node name.
  5. Append now uses sensible separator (customisable via easy-kill-alist).
  6. The format of easy-kill-alist has changed. The old (CHAR . THING) format is still supported but may be removed in future.



Kill & Mark Things Easily in Emacs



No packages published

Contributors 4

You can’t perform that action at this time.