[英]Can I clean the repl?
我在repl控制台中玩了很多代碼,我該如何清除它? 我想要一個新的,而不重新啟動它。 可以這樣做嗎?
如果要清除所聲明的所有臨時變量和函數的當前名稱空間,可以使用這個單元格(或者使用它的函數):
(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終端中,您有一個菜單選項Terminal / Reset和Clear
清理整個緩沖區的方法是: C - u C - c C - o
清除最后一個輸出的快捷方式: C - c C - o
注意,舊方法是: C - c M - o
此外, cider-repl-clear-buffer
(在我的機器上綁定到C - ENTER s - c )
我通過Mx使用Emacs命令cider-repl-clear-buffer
。 也可以使用帶有前綴參數的cider-repl-clear-output
: Cu Cc Co。
這取決於你所說的'干凈'。 要刪除“包”中的所有名稱空間,您可以使用:
(mapv remove-ns
(map symbol
(filter #(.startsWith % "org.mycompany")
(map str (all-ns)))))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.