【问题标题】:Copy/Yank entire Lisp form in Slime在 Slime 中复制/拉动整个 Lisp 表单
【发布时间】:2011-06-07 03:59:38
【问题描述】:

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

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

(myfunc (lst)
    (myotherfunc lst))

我想复制/复制:

(myotherfunc lst)

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

【问题讨论】:

    标签: emacs lisp slime


    【解决方案1】:
    • C-M-SPC (mark-sexp) 放置标记 在 sexp 的末尾,然后复制/复制

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

      李>

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 这里也值得一提,只是提醒那些不知道 C-y 的人会将行插入到当前光标位置的缓冲区中。
        【解决方案4】:

        您可以使用lispy,然后您可以按运行lispy-new-copyn进行复制

        (myotherfunc lst)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-06-22
          • 1970-01-01
          • 2013-06-27
          • 2021-09-12
          • 2011-11-08
          • 2014-11-20
          • 2011-05-24
          • 1970-01-01
          相关资源
          最近更新 更多