Come si cancella la console IRB?


186

Come si cancella la schermata della console IRB?

Risposte:


267

Su Mac OS X o Linux puoi usare Ctrl+ Lper cancellare lo schermo IRB .


8
Ctrl+Lfunziona anche in gnome-terminal, ma qualcosa di più programmatico èsystem 'clear'
vol7ron,

Con zsh ctrl + L non funziona, ctrl + K funziona. (Oh My ZSH per essere precisi)
SidOfc

@SidneyLiebrand Ho testato su Oh My ZSH e ha funzionato solo Ctrl + L
pluralismo

2
@fanaugen Su MacOS, cmd+kcancellerai tutto in un tocco, se usi tmux per dividere l'area dell'area visiva, ctrl+Lfarà un lavoro migliore.
Fan Yer,

59

Buttalo dentro %userprofile%\.irbrce stai bene

def cls
  system('cls')
end

Dallo schermo IRB chiaro su Windows .


13
Dovrei chiarire che questo vale solo per Windows.
Ben Hoffstein,

8
system('clear')funzionerà anche su un Mac. Va notato che questo lascerà => truenella parte superiore della console.
Michael Dorst,

1
Il sistema `@anthropomorphic ('clear') funzionerà su quasi tutti i sistemi simili a Unix / Unix.
enedil,

@enedil È assolutamente vero, tuttavia molte persone non sanno che OS X è un sistema simile a Unix.
Michael Dorst,

@anthropomorphic perché è non è . OS X è certificato Unix da Open Group.
enedil,

41

Su * nix box

`clear`

Su Windows

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

su OSX

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

3
sì, questo non funziona. Devo fare system('clear')o Ctrl+L
Connor Leech il

system 'clear'ha funzionato per me ma ho ottenuto: command not found => false
eco

1
Per questo puoi aggiungere un alias come il cleartuo file pryrc. Grazie per aver condiviso
James Klein il


16

Su Ubuntu 11.10 il sistema clearcancella principalmente la finestra IRB. Ottieni un ritorno=> True valore di stampato.

Un gran casino di brutti testi

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

cosa ottieni:

 => true 
ruby-1.9.2-p290 :007 > 

10

L'ho scoperto oggi: in Pry (un'alternativa IRB), una riga di input che inizia con un .verrà inoltrata alla shell dei comandi. Ciò significa che in Mac e Linux, possiamo usare:

. clear

Aggiornamento: purtroppo non sembra funzionare su Windows.

Fonte: Pryrepl.org


Ho appena provato questo usando irb raw sotto Ruby 2.0.0p481 su Windows e non funziona.
John Topley,

Sì. Sembra che non funzioni in Windows. Ma sicuramente funziona su Mac e Linux.
Chandresh Pant,

Mi piace questa risposta al meglio. Non devi modificare nulla ed è solo sborsare. Anche semplice da ricordare. A proposito, . clsdovrebbe funzionare su Windows.
Eric Boehs,

Mi chiedo quale comando funzionerebbe con tmux. Penso che Ctrl + L sia quello come dice thatway_3 in basso.
Pablo,

9

Per cancellare lo schermo basta fare:

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

PS Questo è stato testato su Linux.


Questo è solo l'output di `clear`ed è equivalente a puts %x(/usr/bin/clear).
Todd A. Jacobs,


8

Su Linux Mint 17 puoi anche usare Ctrl+ Shift+L

o

Ctrl+ L per cancellare la schermata IRB.


Ha funzionato per Mac OS X.11.1 nell'app Terminal
Patrick

@ thatway_3 - bella risposta: come hai stampato le istruzioni della tastiera su Stackoverflow?
BKSpurgeon


6

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

O in IRB puoi usare system('clear')


5

In Windows, usando Rails 4,

system('cls')

ha funzionato per me


3

Aggiungi il seguente metodo a ~/.irbrc:

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

Cntrl-L o Cntrl-K lavoro su una normale console ma sto usando tmux e quelli rovinano lo schermo all'interno della finestra di tmux.

Il conf.return_format = "" prende il via nullo il valore di ritorno.


3

Gli utenti Windows semplicemente provano,

system 'cls'

O

system('cls')

Sembra così nella finestra IRB,

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

Ha fatto il trucco per me in ruby ​​1.9.3. Tuttavia, i seguenti comandi non hanno funzionato e restituito => nil,

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

3

L'ho usato per file eseguibili:

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

clear


1

Sono venuto qui alla ricerca di un modo per ripristinare il tty con irb, dal momento che non stava stampando nuove righe o mostrando ciò che ho digitato in qualche modo, solo un po 'di output.

1.9.3-p125 :151 >   system 'reset'

finalmente ha fatto il trucco per me!


semplificarlo utilizzando zecche indietro: `reset`.
Tin Man,

@the Tin Man - le levette non funzionano sempre come pensi, ma resetdovrebbero funzionare bene
vol7ron

I backtick funzionano sempre come mi aspetto, ma poi li uso da diverse lingue da anni.
Tin Man,

In effetti, a volte ciò che ricorda un dorso può davvero essere un'altra creatura UTF-8. Di tanto in tanto correggo documenti di "testo" con virgolette superiori e inferiori che in realtà sono! = Il carattere ANSI / ASCII ". Come nei file commerciali SRT, dove si scatena l'inferno.
Marcos,

1

Tonnellate di buone risposte qui, ma spesso vado in remoto in una scatola Linux con Mintty da Windows. Complimenti a quanto sopra sull'uso di .irbrc, ma è venuto fuori con questo:

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

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

Questo ti dà le opzioni sia per il comportamento 'netto' di * nix che per il comportamento 'cls' di Windows, che trovo spesso più utile se voglio davvero nuotare il buffer piuttosto che farlo scorrere fuori dalla vista.

PS una variante simile funziona anche in .bashrc:

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

Se qualcuno riuscisse a trovare un modo per associarlo effettivamente a una sequenza di tasti, mi piacerebbe ascoltarlo. Mi piacerebbe davvero avere qualcosa di simile a cmd-k su osx che avrebbe funzionato in Mintty.


0

Per gli utenti di Windows:

Se si crea un nome di file bat c.bat i cui contenuti sono:

@echo off
cls

Quindi, in IRB, puoi dire:

system('c')

per cancellare la console. Ho solo pensato di condividere perché pensavo fosse abbastanza bello. Essenzialmente qualsiasi cosa nel percorso è accessibile.


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]

Questo cancella completamente lo schermo IRB, senza righe vuote extra e roba "=> zero". Testato su Linux / Windows.

Questo one-liner potrebbe essere espanso come:

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

Questo utilizza molti trucchi.

In primo luogo, irb chiamerà echo?per verificare se il risultato deve essere stampato. Ho salvato il metodo, quindi ridefinito con un metodo che ripristina la definizione ma restituisce false in modo che irb non rispecchi il risultato.

In secondo luogo, ho stampato alcuni caratteri di controllo ANSI. \e[2Jpulirà lo schermo e \e[Hsposta il cursore nella posizione in alto a sinistra dello schermo. \e[Dstamperà uno spazio e quindi sposta indietro il cursore mentre questa è una soluzione alternativa per qualcosa di strano su Windows.

Finalmente questo non è affatto pratico. Sorridi e basta ;)


-3

L'operatore backtick acquisisce l'output del comando e lo restituisce

s = `cls`
puts s

funzionerebbe meglio, immagino.


1
Questo non riesce: ottieni questo irb (principale): 004: 0> cls=> "\ f"
Orion Edwards,

@OrionEdwards @JesperE la prima riga mi ha mostrato "\f"qual è quello che hai ottenuto e quindi l' puts soutput mi chiedo perché?
Lucky
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.