Jak wyczyścić konsolę IRB?


Odpowiedzi:


267

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


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 .


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

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


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 > 

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


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.


To jest tylko wynik `clear`i jest równoważne z puts %x(/usr/bin/clear).
Todd A. Jacobs,


8

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

lub

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


Pracował dla Mac OS X.11.1 w aplikacji Terminal
Patrick

@ thatway_3 - fajna odpowiedź: jak wydrukowałeś instrukcje klawiatury na Stackoverflow?
BKSpurgeon


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


5

W systemie Windows za pomocą Rails 4

system('cls')

pracował dla mnie


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.


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

3

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

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

clear


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!


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.


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.


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


-3

Operator wsteczny przechwytuje dane wyjściowe polecenia i zwraca je

s = `cls`
puts s

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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.