【发布时间】:2011-04-07 20:57:44
【问题描述】:
我在repl控制台中玩过很多代码,如何清除?我想要一个新的而不重新启动它。可以这样做吗?
【问题讨论】:
标签: clojure read-eval-print-loop
我在repl控制台中玩过很多代码,如何清除?我想要一个新的而不重新启动它。可以这样做吗?
【问题讨论】:
标签: clojure read-eval-print-loop
如果你想清除你声明的所有临时变量和函数的当前命名空间,你可以使用这个衬垫(或制作它的一个函数):
(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/粘液 REPL 中 C-c C-o 清除最后的输出(如果你输入的东西给出了很长的答案) C-c M-o 清除整个事情
在 GNOME 终端中,您有一个菜单选项终端/重置和清除
【讨论】:
清理整个缓冲区的快捷方式:C-u C-c C-o
清理最后一个输出的快捷方式:C-c C-o
注意,旧方法是:C-c M-o
另外,cider-repl-clear-buffer(在我的机器上绑定到 C-ENTER s-c )
【讨论】:
我通过 M-x 使用 Emacs 命令 cider-repl-clear-buffer。也可以使用带有前缀参数的cider-repl-clear-output:C-u C-c C-o。
【讨论】:
这取决于你所说的“干净”是什么意思。要删除“包”中的所有命名空间,您可以使用:
(mapv remove-ns
(map symbol
(filter #(.startsWith % "org.mycompany")
(map str (all-ns)))))
【讨论】: