我在 repl 控制台中玩过很多代码,如何清除它?我想要一个新的而不重新启动它。可以这样做吗?
8 回答
如果您想清除您声明的所有临时变量和函数的当前命名空间,您可以使用这个衬垫(或制作它的函数):
(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 会话中积累。
小心使用:不要从脚下拉地毯!
如果您通过终端窗口运行 repl(例如:MacOS 上的 Terminal.app 或 linux 上的 xterm/aterm/urxvt 等),那么您可以键入Control-L,它应该会清除终端窗口并为您提供新的 repl 提示。但是,您之前定义的所有宏/原子仍将在内存中,所以这只是一个“装饰”清晰。
在 EMACS/slime REPLs 中 Cc Co 清除最后一个输出(如果您输入的内容给出了很长的答案) Cc Mo 清除整个输出
在 GNOME 终端中,您有一个菜单选项终端/重置和清除
清理整个缓冲区的捷径:C- u C- c C-o
清理最后一个输出的快捷方式:C- c C-o
请注意,旧方法是:C- c M-o
另外, (在我的机器上cider-repl-clear-buffer
必须C- ENTER s- )c
如果您使用的是 Emacs + nREPL
,您可以:
- 运行Mx
nrepl-clear-buffer
或 - 跑Cc Mo
如果未启用键绑定,请运行Mxnrepl-interaction-mode
以启用它。您可以在nrepl.el中找到其他有用的快捷方式和/或自定义键绑定以满足您的需求。
nREPL
注意:您可以通过运行M-x v
nrepl-mode-map
并点击链接在您的系统中找到 all的键绑定nrepl.el
。
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.
这取决于您所说的“干净”是什么意思。要删除“包”中的所有命名空间,您可以使用:
(mapv remove-ns
(map symbol
(filter #(.startsWith % "org.mycompany")
(map str (all-ns)))))