Wie löscht man die IRB-Konsole?


Antworten:


267

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


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 .


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

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


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 > 

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


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.


Dies ist nur die Ausgabe von `clear`und entspricht puts %x(/usr/bin/clear).
Todd A. Jacobs


8

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

oder

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


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

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


5

In Windows mit Rails 4,

system('cls')

arbeitete für mich


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.


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

3

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

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

clear


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!


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.


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.


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


-3

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

s = `cls`
puts s

würde besser funktionieren, denke ich.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.