我在repl控制台中玩过很多代码,我该如何清除它?我想要一个新的,而不重新启动它。可以这样做吗?
答案 0 :(得分:49)
如果要清除所声明的所有临时变量和函数的当前命名空间,可以使用这一个衬里(或者使用它的函数):
(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会话中累积的垃圾名称。
谨慎使用:不要从脚下拉地毯!
答案 1 :(得分:21)
如果你通过终端窗口运行repl(例如:MacOS上的Terminal.app或linux上的xterm / aterm / urxvt等),那么你可以输入 Control-L ,它应该清除终端窗口,并给你一个新的repl提示。但是,您之前定义的所有宏/原子仍然会在内存中,因此这只是一个“化妆品”清晰。
答案 2 :(得分:18)
在EMACS / slime REPL中 C-c C-o清除最后一个输出(如果您输入的内容给出了很长的答案) C-c M-o清除整个事情
在GNOME终端中,您有一个菜单选项Terminal / Reset and Clear
答案 3 :(得分:5)
清理整个缓冲区: C - u C - c C < / kbd> - o
清理最后一个输出的快捷方式: C - c C - o
注意,旧方法是: C - c M - o
此外,cider-repl-clear-buffer
(绑定到 C - ENTER s - c on我的机器)
答案 4 :(得分:4)
如果您使用的是Emacs + nREPL
,您可以:
nrepl-clear-buffer
或 如果未启用键绑定,请运行 M x nrepl-interaction-mode
以启用它。您可以在nrepl.el中找到其他有用的快捷方式和/或自定义键绑定以满足您的需求。
注意:您可以通过运行nREPL
M-x v
并按照nrepl-mode-map
链接在系统中找到所有nrepl.el
的键绑定。
答案 5 :(得分:2)
我通过 M-x 使用Emacs命令 params[:mg_question_id].each do |question|
@poll=MgPollData.new
@poll.mg_question_id= question
params[:options_id].each do |k,v|
if k==question
@poll.answer= v
end
end
@poll_answers.save
end
。也可以使用带有前缀参数的cider-repl-clear-buffer
: C-u C-c C-o 。
答案 6 :(得分:0)
这取决于你的意思&#39;清洁&#39;。删除&#39;包中的所有名称空间你可以使用:
(mapv remove-ns
(map symbol
(filter #(.startsWith % "org.mycompany")
(map str (all-ns)))))
答案 7 :(得分:0)