EasyKill: 更高效的在 Emacs 中复制文本

1. Intro

Easy-kill 是一个编辑增强插件,主要提升 emacs 标记复制等操作的效率。

2. Setup

(use-package easy-kill
  :bind (([remap kill-ring-save] . easy-kill)
         ([remap mark-sexp] . easy-mark))
  )

3. Usage

EasyKill 提供 easy-kill 和 easy-mark 两个命令。推荐按照上面的配置来替换原生的复制和标记命令,现在 M-w 既是一个命令,同时也是一个命令前缀。当单独按下 M-w 时,其会依次按 region,url ,email 和current-line 等当前光标下的内容的类型进行选择(selection)并复制。当作为命令前缀使用时,可以按下 M-w 后接想要复制的对象类型进行复制,如下表所示:

M-w w 复制单词
M-w s 复制 sexp 表达式
M-w l 复制当前行
M-w d 复制当前 defun
M-w D 复制当前 defun 的名字
M-w f 复制当前文件名
M-w b 复制当前 buffer 的名字或者 default-directory

上述命令又可再次看作是一个命令前缀,可继续接文本对象进行选择复制,比如,按下 M-w w 复制当下单词,再按一次 w 可会继续扩充选中下一个单词并复制,或者继续接 motion 来执行区域选择或其他操作:

@ append selection to previous kill and exit
C-w kill selection and exit
+, -,1..9 expand/shrink selection
0 shrink the selection to the initial size
SPC cycle through things in easy-kill-alist
C-SPC turn selection into an active region
C-g abort
? help

下面是一些使用实例:

M-w w w 选中 3 个单词并复制
M-w w 3 等同 M-w w w w
M-w 3
M-w SPS 循环选中 easy-kill-alist 的对象,并复制
M-w l 2 C-w 选中 3 行复制剪切,并退出

4. Comment

编辑思想跟 kakoune 类比较类似,选择 + 操作。是一种很高效直观的编辑方式。


Created with Emacs 29.4 (Org mode 9.6.15) by YangXue
Updated: 2025-01-24 Fri 02:00