emacs:将S表达式放入压井环,而不移除它

emacs:将S表达式放入压井环,而不移除它,emacs,copy-paste,kill-ring,Emacs,Copy Paste,Kill Ring,我正在寻找一个命令,在不移除它的情况下,将S表达式放入杀死环 使用M-x kill sexp时,下面的场景可以完成此操作,但是表达式将被删除: (foo (bar bam)) ^ point here 没有单一和弦,但您可以执行两个操作: C-M-SPC和C-M-@都运行该命令 M-w运行该命令 或者,你也可以这样做 C-M-k运行该命令 C-/运行命令 如果缓冲区是只读的,则第一个命令将失败,但 S-expression仍将被复制到中。有很多方法可以做到这一点(例如,在点处使用内置的

我正在寻找一个命令,在不移除它的情况下,将S表达式放入杀死环

使用
M-x kill sexp
时,下面的场景可以完成此操作,但是表达式将被删除:

(foo (bar bam))
^
point here

没有单一和弦,但您可以执行两个操作:

  • C-M-SPC和C-M-@都运行该命令
  • M-w运行该命令
或者,你也可以这样做

  • C-M-k运行该命令
  • C-/运行命令
如果缓冲区是只读的,则第一个命令将失败,但
S-expression仍将被复制到中。

有很多方法可以做到这一点(例如,在点处使用内置的
东西,或者只需通过
交互调用
来调用
kill sexp
,然后恢复原始缓冲区内容)

不过,作为稍微修改的
kill sexp
实现起来非常简单。这就是我使用的:

(defun copy-sexp-as-kill (&optional arg)
  "Save the sexp following point to the kill ring.
ARG has the same meaning as for `kill-sexp'."
  (interactive "p")
  (save-excursion
    (let ((orig-point (point)))
      (forward-sexp (or arg 1))
      (kill-ring-save orig-point (point)))))

(global-set-key (kbd "M-K") #'copy-sexp-as-kill)

我建议安装时只需使用
sp copy sexp

C-M-SPC
+
M-w
即可。