【问题标题】:Can I clean the repl?我可以清理repl吗?
【发布时间】:2011-04-07 20:57:44
【问题描述】:

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

【问题讨论】:

    标签: clojure read-eval-print-loop


    【解决方案1】:

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

    (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 会话中积累。

    谨慎使用:不要从脚下拉地毯!

    【讨论】:

    • 谢谢。我正在考虑摆脱控制台中的文本......你给它注入了新的光芒
    • 这是寻找正确问题的绝佳答案。
    【解决方案2】:

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

    【讨论】:

    • 最初的问题是关于从外观上清除 repl。后来我意识到清理也可能意味着其他东西:)
    【解决方案3】:

    在 EMACS/粘液 REPL 中 C-c C-o 清除最后的输出(如果你输入的东西给出了很长的答案) C-c M-o 清除整个事情

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

    【讨论】:

    • 请注意,C-c M-o 不会删除任何已经被 REPL 实际解释的工作,它只是清除屏幕。任何定义仍然存在。
    【解决方案4】:

    清理整个缓冲区的快捷方式:C-u C-c C-o

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

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

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

    【讨论】:

      【解决方案5】:

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

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

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

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

      【讨论】:

        【解决方案6】:

        我通过 M-x 使用 Emacs 命令 cider-repl-clear-buffer。也可以使用带有前缀参数的cider-repl-clear-outputC-u C-c C-o

        【讨论】:

          【解决方案7】:

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

          (mapv remove-ns 
            (map symbol 
              (filter #(.startsWith % "org.mycompany") 
                (map str (all-ns)))))
          

          【讨论】:

            【解决方案8】:

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

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

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

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

            【讨论】:

              猜你喜欢
              • 2011-10-16
              • 2010-09-17
              • 1970-01-01
              • 2015-02-18
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多