I have played with a lot of code in a repl console, how can I clear it? I would like a fresh one without restarting it. Can that be done?
8 Answers
If you want to clear the current namespace of all temporary variables and functions you declared you can use this one liner (or make a function of it) :
(map #(ns-unmap *ns* %) (keys (ns-interns *ns*)))
or
(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 ...
It does not claim to give you a squeaky clean namespace, just one with less of the junk which usually accumulates in a typical repl session.
Use with caution : do not pull the rug from under your feet!

- 14,999
- 2
- 48
- 58

- 34,983
- 11
- 83
- 114
-
2thanks. i was thinking about just getting rid of the text in the console... you put new light into it – Belun Sep 04 '10 at 11:03
-
4This is an amazing answer in search of the right question. – Travis Rodman Mar 19 '16 at 21:22
If you are running the repl through a terminal window (eg: Terminal.app on MacOS or xterm/aterm/urxvt etc on linux) then you can type Control-L and it should clear the terminal window and give you a new repl prompt. However all macros/atoms you previously defined are still going to be in memory, so this is just a "Cosmetic" clear.

- 26,564
- 11
- 58
- 77
-
the initial question was about cosmetically clearing the repl. later i realized that clearing could also mean something else :) – Belun Sep 04 '10 at 11:01
In EMACS/slime REPLs C-c C-o clears the last output (in case you've typed something that gave a very long answer) C-c M-o clears the whole thing
In GNOME terminals, you've got a menu option Terminal/Reset and Clear

- 17,124
- 11
- 67
- 110
-
1Note that C-c M-o does not erase any work actually interpreted by the REPL already, it just clears the screen. Any definitions are still there. – johnbakers Oct 29 '13 at 05:18
The shorcut to clean the whole buffer : C-u C-c C-o
The shortcut to clean the last output : C-c C-o
Note, the old way was : C-c M-o
Also, cider-repl-clear-buffer
(which is bound to C-ENTER s-c on my machine)

- 17,623
- 13
- 87
- 133
If you are using Emacs + nREPL
, you can either:
- Run Mx
nrepl-clear-buffer
or - Run Cc Mo
If the key binding is not enabled, run Mxnrepl-interaction-mode
to enable it. You can find other useful shortcuts in nrepl.el and/or customize the key bindings to fit your needs.
Note: you can find all nREPL
's key bindings in your system by running M-x v
nrepl-mode-map
and following the nrepl.el
link.

- 2,403
- 21
- 19
I use the Emacs command cider-repl-clear-buffer
via M-x. One might also use cider-repl-clear-output
with a prefix argument: C-u C-c C-o.

- 1,555
- 1
- 18
- 22
It depends what you mean by 'clean'. To remove all namespaces within a 'package' you can use:
(mapv remove-ns
(map symbol
(filter #(.startsWith % "org.mycompany")
(map str (all-ns)))))

- 2,038
- 20
- 15
For users of the Cursive IDE plugin for IntelliJ IDEA who end up here, like me:
You can "cosmetically" clear the REPL (keeping your def'd symbols etc.) by clicking on this icon at the top of the REPL frame:
There's no default key binding for this, but you can easily add one by opening your preferences, navigating to Keymap > Plugins > Cursive, and adding a binding for "Clear output for current REPL".
Alternatively, you can right-click in the editor and access "Clear output for current REPL" via the REPL commands.

- 2,520
- 1
- 14
- 22