2010-09-03 8 views
44

J'ai joué avec beaucoup de code dans une console repl, comment puis-je l'effacer? Je voudrais un nouveau sans le redémarrer. Cela peut-il être fait?Puis-je nettoyer le repl?

Répondre

17

Si vous utilisez la rempl par une fenêtre de terminal (par exemple: Terminal.app sur Mac OS ou xterm/aterm/etc urxvt sur linux), vous pouvez taper Control-L et il devrait effacer la fenêtre du terminal et de donner vous une nouvelle invite repl. Cependant, toutes les macros/atomes que vous avez précédemment définis resteront en mémoire, donc c'est juste un "cosmétique" clair.

+0

La question initiale portait sur la suppression cosmétique du repl. plus tard je me suis rendu compte que la compensation pourrait également signifier quelque chose d'autre :) – Belun

48

Si vous voulez effacer l'espace de noms courant de toutes les variables et fonctions temporaires vous avez déclaré que vous pouvez utiliser cette ligne (ou faire fonction de celui-ci):

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

ou

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

Il ne prétend pas vous donner un espace de noms grinçant propre, juste un avec moins de la camelote qui s'accumule habituellement dans une session de repli typique.

À utiliser avec précaution: ne tirez pas le tapis sous vos pieds!

+1

merci. Je pensais juste à me débarrasser du texte dans la console ... vous y mettez une nouvelle lumière – Belun

+3

C'est une réponse étonnante à la recherche de la bonne question. –

18

emacs/REPLs slime Cc Co efface la dernière sortie (au cas où vous avez tapé quelque chose qui a une très longue réponse) Cc Mo efface tout cela

Dans les terminaux GNOME, vous avez une option de menu Terminal/Reset et Clear

+1

Notez que C-c M-o n'efface aucun travail réellement interprété par le REPL, il efface juste l'écran. Toutes les définitions sont toujours là. – johnbakers

3

Si vous utilisez Emacs + nREPL, vous pouvez:

  • Run M x 0nrepl-clear-bufferou
  • Run CcMo

Si la clé de liaison n'est pas activé, exécutez Mxnrepl-interaction-mode pour l'activer. Vous pouvez trouver d'autres raccourcis utiles dans nrepl.el et/ou personnaliser les raccourcis clavier pour répondre à vos besoins.

Note: vous pouvez trouver tous les raccourcis clavier de votre système de nREPL en exécutant M-x vnrepl-mode-map et suivant le lien nrepl.el.

+0

pourquoi oui je cours emacs. cela fonctionne très bien, merci! :) – enderland

4

Le raccourci pour nettoyer l'ensemble de la mémoire tampon: C - uC - cC - o

Le raccourci pour nettoyer la dernière sortie: C - cC - o

Note, l'ancienne était: C - cM - o

2

J'utilise la commande Emacs cider-repl-clear-buffer via M-x. On peut également utiliser cider-repl-clear-output avec un argument de préfixe: C-u C-c C-0.

0

Cela dépend de ce que vous entendez par «propre». Pour supprimer tous les espaces de noms dans un 'package', vous pouvez utiliser:

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