在Slime中复制/ Yank整个Lisp表单

时间:2011-01-11 12:51:34

标签: emacs lisp slime

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

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

(myfunc (lst)
    (myotherfunc lst))

我想要猛拉/复制:

(myotherfunc lst)

当我的光标位于该窗体的左括号或右括号时(在Slime / Emacs进行括号匹配时)发出键盘快捷键。

4 个答案:

答案 0 :(得分:13)

  • C-M-SPC (mark-sexp)放标 在性别结束时,然后复制/猛拉

  • CMf (forward-sexp)和 CMb (back-sexp)对于在平衡表达式上前后移动非常有用

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

答案 1 :(得分:9)

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

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

答案 2 :(得分:3)

默认情况下,emacs次要模式ParEdit会在正常杀死'C-k'上执行此操作。我当然会推荐给任何emacs +史莱姆用户。

答案 3 :(得分:0)

您可以使用lispy然后按 n 运行lispy-new-copy来复制

(myotherfunc lst)