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:
M-w w: save word at pointM-w s: save sexp at pointM-w l: save list at point (enclosing sexp)M-w d: save defun at pointM-w D: save current defun nameM-w f: save file at pointM-w b: savebuffer-file-nameordefault-directory.-changes the kill to the directory name,+to full name and0to basename.
The following keys modify the selection:
@: append selection to previous kill and exit. For example,M-w d @will append current function to last kill.C-w: kill selection and exit+,-and1..9: expand/shrink selection0shrink the selection to the initial size i.e. before any expansionSPC: cycle through things ineasy-kill-alistC-SPC: turn selection into an active regionC-g: abort?: 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:
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.
- [BREAKING] Emacs >= 25 required.
- [BREAKING] Remove deprecated format for
easy-kill-alist. - Include
uuidineasy-kill-try-thingsandeasy-mark-try-things.
- New user variable
easy-kill-unhighlight-key. - key
Dselects current defun name. - Key
SPCselects things ineasy-kill-alistin turn.
- Key
?ineasy-killoreasy-markprints help info. M-w lcan select the enclosing string.easy-marklearns exchanging point & mark.- Key
0now sets the selection to its initial size before any expansion. M-w l,M-w sand list-wise+/-now work in Org mode.
-can move pass the first selection.+/-onsexpno longer changethingtolist- Mouse over the selection now shows description.
- Echo js2 node name.
- Append now uses sensible separator (customisable via
easy-kill-alist). - The format of easy-kill-alist has changed. The old
(CHAR . THING)format is still supported but may be removed in future.