Jak wyczyścić konsolę IRB?

186

Jak wyczyścić ekran konsoli IRB?

John Topley
źródło

Odpowiedzi:

267

W Mac OS X lub Linux możesz użyć Ctrl+, Laby wyczyścić ekran IRB .

John Topley
źródło
8
Ctrl+Ldziała również w terminalu gnome, ale czymś bardziej programowym jestsystem 'clear'
vol7ron
Zsh ctrl + L nie działa, ctrl + K działa. (Oh My ZSH, żeby być konkretnym)
SidOfc
@ SidneyLiebrand Testowałem na Oh My ZSH i działało tylko Ctrl + L
pluralizm
2
@fanaugen W systemie MacOS cmd+kwyczyści wszystko w obszarze terminalu, jeśli użyjesz tmux do podzielenia obszaru obszaru wizualnego, ctrl+Lwykona lepszą pracę.
Fan Yer
59

Wrzuć to do środka %userprofile%\.irbrci jesteś dobry

def cls
  system('cls')
end

Z IRB czysty ekran w systemie Windows .

Ben Hoffstein
źródło
13
Powinienem wyjaśnić, że dotyczy to tylko systemu Windows.
Ben Hoffstein
8
system('clear')będzie również działać na komputerze Mac. Należy zauważyć, że pozostawi to => trueu góry konsoli.
Michael Dorst
1
@anthropomorphic `system ('clear') będzie działał na prawie każdym systemie uniksowym / podobnym do Uniksa.
enedil
@enedil To absolutnie prawda, jednak wiele osób nie wie, że OS X jest systemem uniksopodobnym.
Michael Dorst
@antropomorficzne, ponieważ tak nie jest . OS X ma certyfikat Unix wydany przez Open Group.
enedil
41

W polach * nix

`clear`

w systemie Windows

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

na OSX

system 'clear' # works
`clear` # does not work
AShelly
źródło
3
tak, to nie działa. Musisz zrobić system('clear')lub Ctrl+L
Connor Leech
system 'clear'pracował dla mnie, ale dostałem: command not found => false
ech
1
Możesz do tego dodać alias, taki jak clearTwój plik pryrc. Dzięki za udostępnienie
James Klein
21

Command+ Kw macOS działa świetnie.

użytkownik1323136
źródło
16

W systemie Ubuntu 11.10 system w clearwiększości wyczyści okno IRB. Otrzymasz => Truewydrukowaną wartość zwrotu .

Duży bałagan brzydkiego tekstu

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

co dostajesz:

 => true 
ruby-1.9.2-p290 :007 > 
TW Scannell
źródło
10

Właśnie to odkryłem dzisiaj: w Pry (alternatywa IRB) linia danych wejściowych rozpoczynająca się od znaku .zostanie przekazana do powłoki poleceń. Co oznacza, że ​​w systemach Mac i Linux możemy użyć:

. clear

Aktualizacja: Niestety nie działa w systemie Windows.

Źródło: Pryrepl.org

Spodnie Chandresh
źródło
Właśnie próbowałem tego przy użyciu raw irb pod Ruby 2.0.0p481 na Windowsie i to nie działa.
John Topley,
Tak. Wygląda na to, że nie działa w systemie Windows. Ale z pewnością działa w systemach Mac i Linux.
Chandresh Pant
Najbardziej podoba mi się ta odpowiedź. Nie musisz niczego modyfikować, a to po prostu ostrzał. Prosty do zapamiętania. Btw, . clspowinien działać w systemie Windows.
Eric Boehs,
Zastanawiam się, które polecenie działałoby z tmux. Wydaje mi się, że Ctrl + L to ten, który napisał thatway_3 poniżej.
Pablo
9

Aby wyczyścić ekran, po prostu wykonaj:

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

PS Zostało to przetestowane w systemie Linux.

Sujit Kumar
źródło
To jest tylko wynik `clear`i jest równoważne z puts %x(/usr/bin/clear).
Todd A. Jacobs,
9
system 'clear'

Powinien również działać na szynach 4.0

Arvind singh
źródło
8

W Linux Mint 17 możesz także używać Ctrl+ Shift+L

lub

Ctrl+, L aby wyczyścić ekran IRB.

thatway_3
źródło
Pracował dla Mac OS X.11.1 w aplikacji Terminal
Patrick
@ thatway_3 - fajna odpowiedź: jak wydrukowałeś instrukcje klawiatury na Stackoverflow?
BKSpurgeon
6
puts `clear`

Czyści ekran, a następnie zwraca => nilTestowane na terminalu Mac OSX 10.6 i iTerm2.

Lucas Rockett Gutterman
źródło
6

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

Lub w IRB możesz użyć system('clear')

Stephen Ross
źródło
5

W systemie Windows za pomocą Rails 4

system('cls')

pracował dla mnie

Clay H
źródło
3

Dodaj następującą metodę do ~/.irbrc:

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

Cntrl-Llub Cntrl-K pracuję w zwykłej konsoli, ale używam tmux, a te powodują bałagan na ekranie w oknie tmux.

Conf.return_format = „” bierze nil off wartości zwracanej.

TheFed
źródło
3

Użytkownicy systemu Windows po prostu próbują,

system 'cls'

LUB

system('cls')

Wygląda tak w oknie IRB,

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

Wykonał dla mnie lewę w Ruby 1.9.3. Jednak następujące polecenia nie działały i zwróciły => nil,

system('clear')
system 'clear'
system `cls`       #using the backquotes below ESC Key in windows
Szczęściarz
źródło
3

Użyłem tego do plików wykonywalnych:

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

clear
avinashbot
źródło
2
system 'cls' 

Działa dla mnie w systemie Windows, z Ruby 2.2.0 i szynami 4.0

saadibabar
źródło
Masz na myśli Rails 4?
Cofnij
1

Przyszedłem tutaj, aby znaleźć sposób na zresetowanie tty przy pomocy irb, ponieważ nie drukowało to nowych linii ani nie pokazywało tego, co napisałem, tylko niektóre wyniki.

1.9.3-p125 :151 >   system 'reset'

w końcu załatwił sprawę dla mnie!

Marcos
źródło
uproszczenie korzystania z powrotem kleszczy: `reset`.
Tin Man
@Tin Man - backticks nie zawsze działają tak, jak myślisz, ale resetpowinny działać dobrze
vol7ron
Backticks zawsze działają tak, jak się spodziewam, ale potem używałem ich w różnych językach od lat.
Tin Man,
Rzeczywiście, czasami to, co przypomina cios w tył, może rzeczywiście być jakimś innym stworzeniem UTF-8. Od czasu do czasu naprawiam dokumenty „tekstowe” z górnymi i dolnymi znakami cudzysłowu, które są w rzeczywistości! = Znak ANSI / ASCII. Jak w komercyjnych plikach SRT, gdzie piekło się rozprasza
Marcos
1

Mnóstwo dobrych odpowiedzi tutaj, ale często zdalnie chodzę do systemu Linux z Mintty z okien. Wyrazy uznania dla powyższego dotyczące używania .irbrc, ale wymyślił to:

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

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

Daje to opcje zarówno dla zachowania „wyczyść” * nix, jak i zachowania „cls” systemu Windows, które często uważam za bardziej przydatne, jeśli naprawdę chcę nuke bufora, zamiast po prostu przewinąć go z widoku.

PS podobny wariant działa również w .bashrc:

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

Jeśli ktokolwiek mógłby znaleźć sposób na mapowanie tego na naciśnięcie klawisza, bardzo chciałbym to usłyszeć. Naprawdę chciałbym mieć coś podobnego do cmd-k na osx, który działałby w Mintty.

erich2k8
źródło
0

Dla użytkowników systemu Windows:

Jeśli utworzysz plik nietoperza c.bat, którego zawartość to:

@echo off
cls

Następnie w IRB możesz powiedzieć:

system('c')

wyczyścić konsolę. Pomyślałem, że podzielę się tym, ponieważ pomyślałem, że to całkiem fajne. Zasadniczo wszystko na ścieżce jest dostępne.

podatny na wypadki
źródło
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]

Spowoduje to całkowite wyczyszczenie ekranu IRB, bez dodatkowych pustych linii i „=> zero”. Testowany w systemie Linux / Windows.

Ten jednowarstwowy można rozszerzyć jako:

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

To wymaga wielu sztuczek.

Po pierwsze, irb zadzwoni, echo?aby sprawdzić, czy wynik powinien zostać wydrukowany. Zapisałem metodę, a następnie ponownie zdefiniowałem przy pomocy metody, która przywraca definację, ale zwraca wartość false, więc irb nie wyświetli wyniku.

Po drugie, wydrukowałem kilka znaków kontrolnych ANSI. \e[2Jwyczyści ekran i \e[Hprzesunie kursor do górnej lewej pozycji ekranu. \e[Dwypisze spację, a następnie przesunie kursor do tyłu, podczas gdy jest to obejście dla czegoś dziwnego w systemie Windows.

Wreszcie jest to w ogóle niepraktyczne. Uśmiechnij się ;)

orzFly
źródło
-3

Operator wsteczny przechwytuje dane wyjściowe polecenia i zwraca je

s = `cls`
puts s

działałoby lepiej, tak myślę.

JesperE
źródło
1
To się nie udaje: Otrzymujesz ten irb (główny): 004: 0> cls=> "\ f"
Orion Edwards,
@OrionEdwards @JesperE pierwsza linia pokazała mi, "\f"co masz, a następnie puts swyświetla to. Zastanawiam się, dlaczego?
Lucky