7

有没有办法在 Slime/Emacs 中复制/拉出整个表单?

例如,如果我有以下功能:

(myfunc (lst)
    (myotherfunc lst))

我想拉/复制:

(myotherfunc lst)

通过在我的光标位于该表单的左括号或右括号时发出键盘快捷键(在 Slime/Emacs 进行括号匹配的位置)。

4

4 回答 4

14
  • C-M-SPC(mark-sexp) 将标记放在 sexp 的末尾,然后复制/拉动

  • C-M-f(forward-sexp) 和C-M-b(backward-sexp) 在平衡表达式上向前和向后移动很有用

http://www.emacswiki.org/emacs/ParenthesisMatching#toc2

于 2011-01-11T15:12:23.647 回答
10

在我的 Emacs 中,函数kill-sexp绑定到C-M-k. 也就是说,假设该点就在平衡表达式的开始分隔符之前,请同时按下 Control、Meta 和 k。

相同的命令在各种其他非 Lisp 模式下也有效,例如在 C 风格模式下杀死大括号分隔的块,尽管该kill-sexp命令可能不会绑定到相同的键。

于 2011-01-11T14:59:17.163 回答
4

默认情况下,emacs 次要模式ParEdit在正常杀死“Ck”时执行此操作。我当然会向任何 emacs+slime 用户推荐它。

于 2011-01-11T15:27:49.520 回答
0

你可以使用 lispy然后你可以按nwhich runs lispy-new-copyto copy

(myotherfunc lst)
于 2015-09-16T10:04:26.513 回答