我可以清理repl吗?

时间:2010-09-03 13:47:24

标签: clojure read-eval-print-loop

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

8 个答案:

答案 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,您可以:

  • 运行 M x nrepl-clear-buffer
  • 运行 C c M o

如果未启用键绑定,请运行 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)

对于像我这样结束于IntelliJ IDEA的Cursive IDE插件的用户:

您可以通过单击REPL框架顶部的以下图标来​​“美容”清除REPL(保留定义的符号等):

Clear REPL icon

对此没有默认的键绑定,但是您可以通过以下方式轻松添加一个键:打开您的首选项,导航至“键映射”>“插件”>“草书”,然后为“清除当前REPL的输出”添加绑定。

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