Wie löscht man die IRB-Konsole?

186

Wie löscht man den IRB-Konsolenbildschirm?

John Topley
quelle

Antworten:

267

Unter Mac OS X oder Linux können Sie mit Ctrl+ Lden IRB- Bildschirm löschen .

John Topley
quelle
8
Ctrl+Lfunktioniert auch im gnome-terminal, aber etwas programmatischeres istsystem 'clear'
vol7ron
Mit zsh funktioniert Strg + L nicht, Strg + K. (Oh mein ZSH um genau zu sein)
SidOfc
@ SidneyLiebrand Ich habe auf Oh My ZSH getestet und nur Strg + L hat funktioniert
Pluralismus
2
@fanaugen Unter MacOS cmd+kwird alles innerhalb eines Terminal-Tippen gelöscht. Wenn Sie tmux verwenden, um den Bereich des visuellen Bereichs zu teilen, ctrl+Lwird dies eine bessere Arbeit leisten.
Fan Yer
59

Wirf das hinein %userprofile%\.irbrcund du bist gut

def cls
  system('cls')
end

Vom IRB-Bildschirm auf Windows löschen .

Ben Hoffstein
quelle
13
Ich sollte klarstellen, dass dies nur für Windows gilt.
Ben Hoffstein
8
system('clear')funktioniert auch auf einem Mac. Es ist zu beachten, dass dies => trueoben auf der Konsole verbleibt.
Michael Dorst
1
@anthropomorphic `system ('clear') funktioniert auf fast jedem Unix / Unix-ähnlichen System.
Ende
@enedil Das ist absolut richtig, aber viele Leute wissen nicht, dass OS X ein Unix-ähnliches System ist.
Michael Dorst
@anthropomorph, weil es nicht ist . OS X ist von Open Group als Unix zertifiziert.
Ende
41

On * nix-Boxen

`clear`

unter Windows

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

unter OSX

system 'clear' # works
`clear` # does not work
AShelly
quelle
3
Ja, das funktioniert nicht. Zu tun haben , system('clear')oder Ctrl+L
Connor Leech
system 'clear'arbeitete für mich, aber ich bekam: command not found => false
Echo
1
Sie können hierfür einen Alias ​​wie clearIhre Pryrc-Datei hinzufügen . Vielen Dank für das Teilen
James Klein
21

Command+ Kin macOS funktioniert super.

user1323136
quelle
16

Unter Ubuntu 11.10 löscht das System clearmeistens das irb-Fenster. Sie erhalten einen Rückgabewert => Truegedruckt.

Ein großes Durcheinander von hässlichem Text

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

was du bekommst:

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

Habe dies heute entdeckt: In Pry (eine IRB-Alternative) wird eine Eingabezeile, die mit a beginnt ., an die Befehlsshell weitergeleitet. Was bedeutet, dass wir in Mac & Linux Folgendes verwenden können:

. clear

Update: Leider scheint es unter Windows nicht zu funktionieren.

Quelle: Pryrepl.org

Chandresh Pant
quelle
Ich habe es gerade mit raw irb unter Ruby 2.0.0p481 unter Windows versucht und es funktioniert nicht.
John Topley
Ja. Scheint, dass es in Windows nicht funktioniert. Aber es funktioniert sicherlich unter Mac & Linux.
Chandresh Pant
Diese Antwort gefällt mir am besten. Sie müssen nichts ändern und es wird nur beschossen. Einfach zu merken. Übrigens . clssollte unter Windows funktionieren.
Eric Boehs
Ich frage mich, welcher Befehl mit tmux funktionieren würde. Ich denke, Strg + L ist derjenige, wie thatway_3 unten sagt.
Pablo
9

Um den Bildschirm zu löschen, gehen Sie einfach wie folgt vor:

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

PS Dies wurde unter Linux getestet.

Sujit Kumar
quelle
Dies ist nur die Ausgabe von `clear`und entspricht puts %x(/usr/bin/clear).
Todd A. Jacobs
9
system 'clear'

Sollte auch für Rails 4.0 funktionieren

Arvind singh
quelle
8

Unter Linux Mint 17 auch können Sie verwenden Ctrl+ Shift+L

oder

Ctrl+ L , um den IRB-Bildschirm zu löschen.

thatway_3
quelle
Arbeitete für Mac OS X.11.1 in der Terminal-App
Patrick
@ thatway_3 - nette Antwort: Wie haben Sie die Tastaturanweisungen auf Stackoverflow gedruckt?
BKSpurgeon
6
puts `clear`

Löscht den Bildschirm und gibt dann => nilTested on Mac OSX 10.6 Terminal und iTerm2 zurück.

Lucas Rockett Gutterman
quelle
6

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

Oder in IRB können Sie verwenden system('clear')

Stephen Ross
quelle
5

In Windows mit Rails 4,

system('cls')

arbeitete für mich

Ton H.
quelle
3

Fügen Sie die folgende Methode hinzu ~/.irbrc:

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

Cntrl-Loder Cntrl-K arbeite in einer normalen Konsole, aber ich benutze tmux und diese bringen den Bildschirm im tmux-Fenster durcheinander.

Das conf.return_format = "" entfernt die Null vom Rückgabewert.

TheFed
quelle
3

Windows-Benutzer versuchen einfach,

system 'cls'

ODER

system('cls')

Sieht im IRB-Fenster so aus,

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

Habe den Trick für mich in Ruby 1.9.3 gemacht. Die folgenden Befehle funktionierten jedoch nicht und wurden zurückgegeben => nil.

system('clear')
system 'clear'
system `cls`       #using the backquotes below ESC Key in windows
Glücklich
quelle
3

Ich habe dies für ausführbare Dateien verwendet:

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

clear
Avinashbot
quelle
2
system 'cls' 

Funktioniert für mich unter Windows mit Ruby 2.2.0 und Rails 4.0

Saadibabar
quelle
Meinst du Rails 4?
Rückgängig machen
1

Ich bin hierher gekommen, um nach einer Möglichkeit zu suchen, das tty mit irb zurückzusetzen, da es keine Zeilenumbrüche druckte oder zeigte, was ich irgendwie eingegeben habe, sondern nur eine Ausgabe.

1.9.3-p125 :151 >   system 'reset'

endlich den Trick für mich gemacht!

Marcos
quelle
Vereinfachen Sie es mit Back Ticks : `reset`.
der Blechmann
@the Tin Man - Backticks funktionieren nicht immer so, wie Sie denken, resetsollten aber gut funktionieren
Vol7ron
Backticks funktionieren immer so, wie ich es erwartet habe, aber dann benutze ich sie seit Jahren in verschiedenen Sprachen.
der Blechmann
In der Tat kann manchmal, was einem Backtick ähnelt, tatsächlich eine andere UTF-8-Kreatur sein. Gelegentlich repariere ich "Text" -Dokumente mit oberen und unteren Anführungszeichen, die tatsächlich sind! = Das ANSI / ASCII "-Zeichen. Wie in kommerziellen SRT-Dateien, in denen die Hölle losbricht.
Marcos
1

Tonnenweise gute Antworten hier, aber ich habe oft eine Minx-Box mit Mintty aus Windows entfernt. Ein großes Lob an die oben genannte Verwendung von .irbrc, aber mit folgendem Ergebnis:

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

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

Dies gibt Ihnen die Optionen sowohl für das Verhalten * nix 'clear' als auch für das Verhalten von Windows 'cls', was ich oft nützlicher finde, wenn ich den Puffer wirklich nuklearisieren möchte, anstatt ihn nur aus der Ansicht zu scrollen.

PS eine ähnliche Variante funktioniert auch in .bashrc:

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

Wenn jemand einen Weg finden könnte, dies tatsächlich einem Tastenanschlag zuzuordnen, würde ich es gerne hören. Ich hätte wirklich gerne etwas Ähnliches wie cmd-k auf osx, das in Mintty funktionieren würde.

erich2k8
quelle
0

Für Windows-Benutzer:

Wenn Sie einen Bat-Dateinamen c.bat erstellen, dessen Inhalt ist:

@echo off
cls

Dann können Sie im IRB sagen:

system('c')

um die Konsole zu löschen. Ich dachte nur, ich würde teilen, weil ich das ziemlich cool fand. Grundsätzlich ist alles im Pfad zugänglich.

unfallträchtig
quelle
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]

Dadurch wird Ihr IRB-Bildschirm vollständig gelöscht, ohne zusätzliche Leerzeilen und "=> Null". Getestet unter Linux / Windows.

Dieser Einzeiler könnte erweitert werden als:

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

Dies verwendet viele Tricks.

Zunächst ruft irb auf, um echo?zu prüfen, ob das Ergebnis gedruckt werden soll. Ich habe die Methode gespeichert und dann mit einer Methode neu definiert, die die Definition wiederherstellt, aber false zurückgibt, damit irb das Ergebnis nicht wiedergibt.

Zweitens habe ich einige ANSI-Steuerzeichen gedruckt. \e[2JBereinigt den Bildschirm und \e[Hbewegt den Cursor an die obere linke Position des Bildschirms. \e[Ddruckt ein Leerzeichen und bewegt dann den Cursor zurück, während dies eine Problemumgehung für etwas Seltsames unter Windows ist.

Schließlich ist dies überhaupt nicht praktikabel. Einfach lächeln ;)

orzFly
quelle
-3

Der Backtick-Operator erfasst die Ausgabe des Befehls und gibt sie zurück

s = `cls`
puts s

würde besser funktionieren, denke ich.

JesperE
quelle
1
Dies schlägt fehl: Sie erhalten diese irb (main): 004: 0> cls=> "\ f"
Orion Edwards
@OrionEdwards @JesperE Die erste Zeile hat mir gezeigt "\f", was Sie haben und puts sgibt dies dann aus. Ich frage mich, warum?
Glücklicher