51

我在 repl 控制台中玩过很多代码,如何清除它?我想要一个新的而不重新启动它。可以这样做吗?

4

8 回答 8

54

如果您想清除您声明的所有临时变量和函数的当前命名空间,您可以使用这个衬垫(或制作它的函数):

(map #(ns-unmap *ns* %) (keys (ns-interns *ns*)))

或者

(ns myutil)
(defn ns-clean
       "Remove all internal mappings from a given name space or the current one if no parameter given."
   ([] (ns-clean *ns*)) 
   ([ns] (map #(ns-unmap ns %) (keys (ns-interns ns)))))
(ns mytest)

... make loads of junk ...

(myutil/ns-clean)

... great!!! I can now make all new junk ... 

它并没有声称给你一个干净利落的命名空间,只是一个具有较少垃圾的命名空间,这些垃圾通常在典型的 repl 会话中积累。

小心使用:不要从脚下拉地毯!

于 2010-09-03T17:42:53.747 回答
24

如果您通过终端窗口运行 repl(例如:MacOS 上的 Terminal.app 或 linux 上的 xterm/aterm/urxvt 等),那么您可以键入Control-L,它应该会清除终端窗口并为您提供新的 repl 提示。但是,您之前定义的所有宏/原子仍将在内存中,所以这只是一个“装饰”清晰。

于 2010-09-03T15:19:48.103 回答
19

在 EMACS/slime REPLs 中 Cc Co 清除最后一个输出(如果您输入的内容给出了很长的答案) Cc Mo 清除整个输出

在 GNOME 终端中,您有一个菜单选项终端/重置和清除

于 2010-09-06T09:04:12.690 回答
7

清理整个缓冲区的捷径:C- u C- c C-o

清理最后一个输出的快捷方式:C- c C-o

请注意,旧方法是:C- c M-o

另外, (在我的机器上cider-repl-clear-buffer必须C- ENTER s- )c

于 2015-12-16T12:44:08.363 回答
4

如果您使用的是 Emacs + nREPL,您可以:

  • 运行Mx nrepl-clear-buffer
  • Cc Mo

如果未启用键绑定,请运行Mxnrepl-interaction-mode以启用它。您可以在nrepl.el中找到其他有用的快捷方式和/或自定义键绑定以满足您的需求。

nREPL注意:您可以通过运行M-x v nrepl-mode-map并点击链接在您的系统中找到 all的键绑定nrepl.el

于 2013-05-25T21:51:11.790 回答
2

I use the Emacs command cider-repl-clear-buffer via M-x. One might also use cider-repl-clear-output with a prefix argument: C-u C-c C-o.

于 2016-03-23T12:43:01.957 回答
0

对于最终来到这里的 IntelliJ IDEA 的 Cursive IDE 插件的用户,比如我:

您可以通过单击 REPL 框架顶部的此图标来“美观地”清除 REPL(保留您的 def'd 符号等):

清除 REPL 图标

没有默认的键绑定,但是您可以通过打开您的首选项,导航到 Keymap > Plugins > Cursive 并为“Clear output for current REPL”添加绑定来轻松添加一个绑定。

或者,您可以在编辑器中右键单击并通过 REPL 命令访问“清除当前 REPL 的输出”。

于 2018-07-24T11:22:34.080 回答
0

这取决于您所说的“干净”是什么意思。要删除“包”中的所有命名空间,您可以使用:

(mapv remove-ns 
  (map symbol 
    (filter #(.startsWith % "org.mycompany") 
      (map str (all-ns)))))
于 2017-02-08T10:21:58.973 回答