2010-09-03 8 views
44

Ich habe mit viel Code in einer Repl-Konsole gespielt, wie kann ich es löschen? Ich möchte ein frisches, ohne es neu zu starten. Kann das gemacht werden?Kann ich das Replikat reinigen?

Antwort

17

Wenn Sie das repl durch ein Terminalfenster ausgeführt werden (zB: Terminal.app auf MacOS oder xterm/aterm/urxvt etc auf Linux), dann können Sie Strg-L Typ und es sollte das Terminalfenster löschen und geben du eine neue repl-Eingabeaufforderung. Allerdings werden alle Makros/Atome, die Sie zuvor definiert haben, immer noch im Speicher sein, daher ist dies nur eine "kosmetische" Übersicht.

+0

die erste Frage war über kosmetisches Clearing der Replik. Später wurde mir klar, dass Clearing könnte auch etwas anderes bedeuten :) – Belun

48

Wenn Sie den aktuellen Namensraum aller temporären Variablen und Funktionen löschen möchten erklärt Ihnen Sie diesen Einzeiler verwenden können (oder eine Funktion davon machen):

(map #(ns-unmap *ns* %) (keys (ns-interns *ns*))) 

oder

(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 ... 

Es erhebt keinen Anspruch auf einen blitzsauberen Namespace, nur einen mit weniger Junk, der sich normalerweise in einer typischen Replikationssitzung anhäuft.

Verwenden Sie mit Vorsicht: Ziehen Sie den Teppich nicht unter Ihren Füßen weg!

+1

danke. ich dachte darüber nach, den Text in der Konsole einfach loszuwerden ... du bringst neues Licht hinein – Belun

+3

Das ist eine erstaunliche Antwort auf der Suche nach der richtigen Frage. –

18

in Emacs/Schleim REPLs Cc Co die letzte Ausgabe (falls Sie etwas eingegeben haben, die eine sehr lange Antwort gab) löscht Cc Mo löscht die ganze Sache

In GNOME-Terminals, haben Sie eine Menüoption Klemme/Reset und Clear

+1

Beachten Sie, dass C-c M-o keine Arbeit löscht, die tatsächlich von der REPL interpretiert wurde, sondern nur den Bildschirm löscht. Irgendwelche Definitionen sind noch dort. – johnbakers

3

Wenn Sie Emacs + nREPL, verwenden können Sie entweder:

  • Run Mxnrepl-clear-bufferoder
  • Run CcMo

Wenn der Schlüssel Bindung nicht aktiviert ist, laufen Mxnrepl-interaction-mode es zu aktivieren. Sie können andere nützliche Verknüpfungen in nrepl.el finden und/oder die Tastenbelegungen an Ihre Bedürfnisse anpassen.

Hinweis: Sie können alle nREPL ‚s Tastenbelegungen in Ihrem System von M-x vnrepl-mode-map und nach dem nrepl.el Link läuft.

+0

warum ja ich betreibe emacs. das funktioniert super, danke! :) – enderland

4

Die shorcut den gesamten Puffer zu reinigen: C - uC - cC - o

Die Verknüpfung die letzte Ausgabe zu reinigen: C - cC - o

Hinweis, der alte Weg war: C - cM - o

2

ich die Emacs cider-repl-clear-buffer über M-x Befehl verwenden. Man könnte auch cider-repl-clear-output mit einem Präfix-Argument verwenden: C-C-C C-O.

0

Es hängt davon ab, was Sie mit "sauber" meinen. Um alle Namespaces innerhalb eines "Pakets" zu entfernen, können Sie Folgendes verwenden: