¿Cómo se borra la consola IRB?


186

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

Respuestas:


267

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


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 .


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

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


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 > 

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


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.


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


8

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

o

Ctrl+ L para borrar la pantalla IRB.


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

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')



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.


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

3

He usado esto para archivos ejecutables:

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

clear


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í!


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.


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.


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 ;)


-3

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

s = `cls`
puts s

funcionaría mejor, supongo.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.