我正在寻找一个将 S 表达式放入杀戮环的命令,而不将其删除。
以下场景会做这件事,但是在使用时会删除表达式M-x kill-sexp
:
(foo (bar bam))
^
point here
我正在寻找一个将 S 表达式放入杀戮环的命令,而不将其删除。
以下场景会做这件事,但是在使用时会删除表达式M-x kill-sexp
:
(foo (bar bam))
^
point here
没有单一的和弦,但你可以做两个:
mark-sexp
kill-ring-save
或者,你可以做
如果您的缓冲区是只读的,第一个命令将失败,但 S 表达式仍将被复制到kill-ring
.
有很多方法可以做到这一点(例如使用内置的thing-at-point
,或者只是调用kill-sexp
viacall-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)
我建议安装smartparens然后简单地使用sp-copy-sexp
.