¿Cómo se borra la consola IRB?

186

¿Cómo se borra la pantalla de la consola IRB?

John Topley
fuente

Respuestas:

267

En Mac OS X o Linux puede usar Ctrl+ Lpara borrar la pantalla IRB .

John Topley
fuente
8
Ctrl+Ltambién funciona en gnome-terminal, pero algo más programático essystem 'clear'
vol7ron
Con zsh ctrl + L no funciona, ctrl + K sí. (Oh My ZSH para ser específico)
SidOfc
@SidneyLiebrand Probé en Oh My ZSH y solo funcionó Ctrl + L
pluralismo
2
@fanaugen En MacOS, cmd+kborrará todo dentro de un toque de terminal, si usa tmux para dividir el área del área visual, ctrl+Lfuncionará mejor.
Fan Yer
59

Tira esto adentro %userprofile%\.irbrcy eres bueno

def cls
  system('cls')
end

De IRB borrar la pantalla en windows .

Ben Hoffstein
fuente
13
Debo aclarar que esto solo se aplica a Windows.
Ben Hoffstein
8
system('clear')También funcionará en una Mac. Cabe señalar que esto dejará => trueen la parte superior de la consola.
Michael Dorst
1
@anthropomorphic `system ('clear') funcionará en casi todos los sistemas tipo Unix / Unix.
enedil
@enedil Eso es absolutamente cierto, sin embargo, muchas personas no saben que OS X es un sistema similar a Unix.
Michael Dorst
@anthropomorphic porque es no . OS X está certificado Unix por Open Group.
enedil
41

En cajas * nix

`clear`

en Windows

system 'cls' # works
`cls` # does not work

en OSX

system 'clear' # works
`clear` # does not work
AShelly
fuente
3
Sí, esto no funciona. Tiene que hacer system('clear')o Ctrl+L
Connor Leech
system 'clear'funcionó para mí pero lo conseguí: command not found => false
echo
1
Puede agregar un alias como clearsu archivo pryrc para esto. Gracias por compartir
James Klein
21

Command+ Ken macOS funciona muy bien.

usuario1323136
fuente
16

En Ubuntu 11.10, el sistema clearborrará principalmente la ventana irb. Obtiene un => Truevalor de retorno impreso.

Un gran lío de texto feo

ruby-1.9.2-p290 :007 > system 'clear'

que obtienes

 => true 
ruby-1.9.2-p290 :007 > 
TW Scannell
fuente
10

Acabo de descubrir esto hoy: en Pry (una alternativa IRB), una línea de entrada que comienza con un .se enviará al shell de comandos. Lo que significa que en mac y Linux, podemos usar:

. clear

Actualización: Desafortunadamente, no parece funcionar en Windows.

Fuente: Pryrepl.org

Chandresh Pant
fuente
Acabo de probar esto usando irb sin procesar en Ruby 2.0.0p481 en Windows y no funciona.
John Topley
Si. Parece que no funciona en Windows. Pero seguramente funciona en mac y Linux.
Chandresh Pant
Me gusta esta respuesta la mejor. No tiene que modificar nada y solo se está desvaneciendo. Simple de recordar también. Por cierto, . clsdebería funcionar en Windows.
Eric Boehs
Me pregunto qué comando funcionaría con tmux. Creo que Ctrl + L es el que thatway_3 dice abajo.
Pablo
9

Para borrar la pantalla solo haz:

puts "\e[H\e[2J"

PD: Esto fue probado en Linux.

Sujit Kumar
fuente
Esto es solo la salida de `clear`, y es equivalente a puts %x(/usr/bin/clear).
Todd A. Jacobs
9
system 'clear'

También debería funcionar para rails 4.0

Arvind Singh
fuente
8

En Linux Mint 17 también puedes usar Ctrl+ Shift+L

o

Ctrl+ L para borrar la pantalla IRB.

thatway_3
fuente
Trabajó para Mac OS X.11.1 en la aplicación Terminal
Patrick
@ thatway_3 - buena respuesta: ¿cómo imprimiste las instrucciones del teclado en Stackoverflow?
BKSpurgeon
6
puts `clear`

Borra la pantalla y luego regresa => nilProbado en Mac OSX 10.6 Terminal e iTerm2.

Lucas Rockett Gutterman
fuente
6

Método: def clear_screen if RUBY_PLATFORM =~ /win32|win64|\.NET|windows|cygwin|mingw32/i system('cls') else system('clear') end end

O en IRB puedes usar system('clear')

Stephen Ross
fuente
5

En Windows, usando Rails 4,

system('cls')

trabajó para mi

Arcilla h
fuente
3

Agregue el siguiente método a ~/.irbrc:

def clear
  conf.return_format = ""
  system('clear')
end

Cntrl-Lo Cntrl-K trabajo en la consola normal, pero estoy usando tmux y esos desordenan la pantalla dentro de la ventana de tmux.

El conf.return_format = "" toma la nula fuera el valor de retorno.

La Reserva Federal
fuente
3

Los usuarios de Windows simplemente intentan,

system 'cls'

O

system('cls')

Se ve así en la ventana IRB,

irb(main):333:0> system 'cls'
irb(main):007:0> system('cls')

Hizo el truco para mí en ruby ​​1.9.3. Sin embargo, los siguientes comandos no funcionaron y regresaron => nil,

system('clear')
system 'clear'
system `cls`       #using the backquotes below ESC Key in windows
Suerte
fuente
3

He usado esto para archivos ejecutables:

def clear
    system("cls") || system("clear") || puts("\e[H\e[2J")
end

clear
avinashbot
fuente
2
system 'cls' 

Funciona para mí en Windows, con Ruby 2.2.0 y rails 4.0

saadibabar
fuente
¿Te refieres a Rails 4?
Deshacer
1

Vine aquí buscando una manera de restablecer el tty con irb, ya que no estaba imprimiendo nuevas líneas o mostrando lo que escribí de alguna manera, solo algo de salida.

1.9.3-p125 :151 >   system 'reset'

finalmente hizo el truco para mí!

Marcos
fuente
simplificarla usando garrapatas traseros: `reset`.
El hombre de hojalata
@the Tin Man: los backticks no siempre funcionan como piensas, pero resetdeberían funcionar bien
vol7ron
Los backticks siempre funcionan como espero, pero los he estado usando en varios idiomas durante años y años.
The Tin Man
De hecho, a veces lo que se asemeja a un backtick puede ser otra criatura UTF-8. Ocasionalmente reparo documentos de "texto" con comillas superiores e inferiores que son en realidad! = El carácter ANSI / ASCII ". Como en los archivos SRT comerciales, donde se desata el infierno.
Marcos
1

Toneladas de buenas respuestas aquí, pero a menudo me acerco a una caja de Linux con Mintty desde Windows. Felicitaciones a lo anterior sobre el uso de .irbrc, pero se le ocurrió esto:

def cls
  puts "\ec\e[3J"
end

def clear
  puts "\e[H\e[2Js"
end

Esto le brinda las opciones tanto para el comportamiento 'claro' * nix como para el comportamiento 'cls' de Windows, que a menudo encuentro más útil si realmente quiero destruir el búfer en lugar de simplemente desplazarlo fuera de la vista.

PS, una variante similar también funciona en .bashrc:

alias cls='echo -e "\ec\e[3J"'

Si alguien pudiera encontrar una manera de mapear eso con solo presionar una tecla, me encantaría escucharlo. Realmente me gustaría tener algo similar a cmd-k en osx que funcionaría en Mintty.

erich2k8
fuente
0

Para usuarios de Windows:

Si crea un nombre de archivo bat c.bat cuyos contenidos son:

@echo off
cls

Luego, en IRB, puedes decir:

system('c')

para limpiar la consola. Solo pensé en compartir porque pensé que era genial. Esencialmente cualquier cosa en el camino es accesible.

propenso a accidentes
fuente
0
->(a,b,c){x=a.method(b);a.send(c,b){send c,b,&x;false};print"\e[2J\e[H \e[D"}[irb_context,:echo?,:define_singleton_method]

Esto borrará completamente la pantalla de IRB, sin líneas vacías adicionales y "=> nulo". Probado en Linux / Windows.

Esta línea podría expandirse como:

lambda {
  original_echo = irb_context.method(:echo?)
  irb_context.send(:define_singleton_method, :echo?) {
    send :define_singleton_method, :echo?, &original_echo
    false
  }
  print "\e[2J\e[H \e[D"
}.call

Esto usa muchos trucos.

En primer lugar, irb llamará echo?para verificar si se debe imprimir el resultado. Guardé el método, luego lo redefiní con un método que restaura la definición pero devuelve falso para que irb no repita el resultado.

En segundo lugar, imprimí algunos caracteres de control ANSI. \e[2Jlimpiará la pantalla y \e[Hmoverá el cursor a la posición superior izquierda de la pantalla. \e[Dimprimirá un espacio y luego moverá el cursor hacia atrás mientras esto es una solución para algo extraño en Windows.

Finalmente, esto no es práctico en absoluto. Sólo sonríe ;)

orzFly
fuente
-3

El operador de retroceso captura el resultado del comando y lo devuelve

s = `cls`
puts s

funcionaría mejor, supongo.

JesperE
fuente
1
Esto falla: obtienes este irb (main): 004: 0> cls=> "\ f"
Orion Edwards el
@OrionEdwards @JesperE la primera línea me mostró "\f"cuál es lo que tienes y luego muestra puts sesto . ¿Me pregunto por qué?
Afortunado el