有没有办法在 Slime/Emacs 中复制/拉出整个表单?
例如,如果我有以下功能:
(myfunc (lst)
(myotherfunc lst))
我想拉/复制:
(myotherfunc lst)
通过在我的光标位于该表单的左括号或右括号时发出键盘快捷键(在 Slime/Emacs 进行括号匹配的位置)。
C-M-SPC(mark-sexp) 将标记放在 sexp 的末尾,然后复制/拉动
C-M-f(forward-sexp) 和C-M-b(backward-sexp) 在平衡表达式上向前和向后移动很有用
在我的 Emacs 中,函数kill-sexp
绑定到C-M-k. 也就是说,假设该点就在平衡表达式的开始分隔符之前,请同时按下 Control、Meta 和 k。
相同的命令在各种其他非 Lisp 模式下也有效,例如在 C 风格模式下杀死大括号分隔的块,尽管该kill-sexp
命令可能不会绑定到相同的键。
默认情况下,emacs 次要模式ParEdit在正常杀死“Ck”时执行此操作。我当然会向任何 emacs+slime 用户推荐它。
你可以使用 lispy然后你可以按nwhich runs lispy-new-copy
to copy
(myotherfunc lst)