簡體   English   中英

我可以清理repl嗎?

[英]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

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

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

如果未啟用密鑰綁定,請運行M x nrepl-interaction-mode以啟用它。 您可以在nrepl.el中找到其他有用的快捷方式和/或自定義鍵綁定以滿足您的需求。

注意:您可以通過運行Mx v nrepl-mode-map並遵循nrepl.el鏈接在系統中找到所有nREPL的鍵綁定。

我通過Mx使用Emacs命令cider-repl-clear-buffer 也可以使用帶有前綴參數的cider-repl-clear-outputCu Cc Co。

這取決於你所說的'干凈'。 要刪除“包”中的所有名稱空間,您可以使用:

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

對於IntelliJ IDEA的Cursive IDE插件的用戶,他們最終來到這里,像我一樣:

您可以通過單擊REPL框架頂部的此圖標來“美化”清除REPL(保留您的def'd符號等):

清除REPL圖標

此處沒有默認的鍵綁定,但您可以通過打開首選項輕松添加一個,導航到Keymap> Plugins> Cursive,並為“當前REPL的清除輸出”添加綁定。

或者,您可以在編輯器中單擊鼠標右鍵,然后通過REPL命令訪問“清除當前REPL的輸出”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM