2010-09-03 25 views
44

He jugado con un montón de código en una consola de respuestas, ¿cómo puedo borrarlo? Me gustaría uno nuevo sin reiniciarlo. ¿Se puede hacer eso?¿Puedo limpiar el repl?

Respuesta

17

Si está ejecutando de la réplica a través de una ventana de terminal (por ejemplo: Terminal.app en MacOS o xterm/aterm/etc urxvt en Linux), entonces se puede escribir Control-L y se debe limpiar la ventana de terminal y dar tienes un nuevo prompt de repl. Sin embargo, todas las macros/átomos que definió previamente seguirán en la memoria, por lo que esto es solo un "Cosmético" claro.

+0

la pregunta inicial fue sobre borrar estéticamente la respuesta. más tarde me di cuenta de que borrar también podría significar algo más :) – Belun

48

Si desea borrar el espacio de nombres actual de todas las variables y funciones temporales que declararon puede utilizar este un trazador de líneas (o hacer una función de ella):

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

o

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

No pretende otorgarle un espacio de nombres limpio y chillón, solo uno con menos basura que generalmente se acumula en una típica sesión de réplica.

Usar con precaución: ¡no tire de la alfombra por debajo de los pies!

+1

gracias. Estaba pensando en deshacerme del texto en la consola ... pones luz nueva en él – Belun

+3

Esta es una respuesta increíble en la búsqueda de la pregunta correcta. –

18

en Emacs/REPLs limo Cc Co borra la última salida (en caso de que haya escrito algo que dio una respuesta muy larga) Cc Mo borra todo el asunto

En terminales GNOME, tienes una opción de menú Terminal/reset y Clear

+1

Tenga en cuenta que C-c M-o no borra ningún trabajo realmente interpretado por el REPL, simplemente borra la pantalla. Cualquier definición todavía está allí. – johnbakers

3

Si está usando Emacs + nREPL, puede:

  • Run Mxnrepl-clear-buffero
  • Run CcMo

Si la clave de enlace no está activado, ejecute Mxnrepl-interaction-mode para que pueda. Puede encontrar otros atajos útiles en nrepl.el y/o personalizar los enlaces de teclas para que se ajusten a sus necesidades.

Nota: se pueden encontrar todos los nREPL 's asociaciones de teclas en su sistema mediante la ejecución de M-x vnrepl-mode-map y siguiendo el enlace nrepl.el.

+0

por qué sí, estoy ejecutando emacs. esto funciona genial, gracias! :) – enderland

4

El atajo para limpiar toda la memoria intermedia: C - uC - cC - o

El acceso directo para limpiar la última salida: C - cC - o

Tenga en cuenta, a la antigua era: C - cM - o

2

utilizo las Emacs comando cider-repl-clear-buffer través M-x. También se podría usar cider-repl-clear-output con un argumento de prefijo: C-u C-c C-o.

0

Depende de lo que quiera decir con 'limpiar'. Para eliminar todos los espacios de nombres dentro de un 'paquete', puede usar:

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