我正在寻找一个命令,将一个S表达式放入杀戮戒指,而不是删除它。
以下方案可以解决问题,但在使用M-x kill-sexp
时,表达式将被删除:
(foo (bar bam))
^
point here
答案 0 :(得分:3)
没有单个和弦,但你可以做两个:
mark-sexp
kill-ring-save
或者,您可以
如果您的缓冲区是只读的,则第一个命令将失败,但是
S表达式仍将被复制到kill-ring
。
答案 1 :(得分:1)
有很多方法可以做到这一点(例如,使用内置thing-at-point
,或只是通过kill-sexp
调用call-interactively
并在之后恢复原始缓冲区内容。)
虽然稍微修改后的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)
答案 2 :(得分:0)
我建议安装smartparens,然后只使用sp-copy-sexp
。