Jak wyczyścić ekran konsoli IRB?
Jak wyczyścić ekran konsoli IRB?
Odpowiedzi:
W Mac OS X lub Linux możesz użyć Ctrl+, Laby wyczyścić ekran IRB .
cmd+k
wyczyści wszystko w obszarze terminalu, jeśli użyjesz tmux do podzielenia obszaru obszaru wizualnego, ctrl+L
wykona lepszą pracę.
Wrzuć to do środka %userprofile%\.irbrc
i jesteś dobry
def cls
system('cls')
end
system('clear')
będzie również działać na komputerze Mac. Należy zauważyć, że pozostawi to => true
u góry konsoli.
W polach * nix
`clear`
w systemie Windows
system 'cls' # works
`cls` # does not work
na OSX
system 'clear' # works
`clear` # does not work
system('clear')
lub Ctrl
+L
system 'clear'
pracował dla mnie, ale dostałem: command not found => false
clear
Twój plik pryrc. Dzięki za udostępnienie
Command+ Kw macOS działa świetnie.
W systemie Ubuntu 11.10 system w clear
większości wyczyści okno IRB. Otrzymasz => True
wydrukowaną 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 >
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
. cls
powinien działać w systemie Windows.
Aby wyczyścić ekran, po prostu wykonaj:
puts "\e[H\e[2J"
PS Zostało to przetestowane w systemie Linux.
`clear`
i jest równoważne z puts %x(/usr/bin/clear)
.
system 'clear'
Powinien również działać na szynach 4.0
W Linux Mint 17 możesz także używać Ctrl+ Shift+L
lub
Ctrl+, L aby wyczyścić ekran IRB.
puts `clear`
Czyści ekran, a następnie zwraca => nil
Testowane na terminalu Mac OSX 10.6 i iTerm2.
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')
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
Użyłem tego do plików wykonywalnych:
def clear
system("cls") || system("clear") || puts("\e[H\e[2J")
end
clear
system 'cls'
Działa dla mnie w systemie Windows, z Ruby 2.2.0 i szynami 4.0
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!
`reset`
.
reset
powinny działać dobrze
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.
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.
->(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[2J
wyczyści ekran i \e[H
przesunie kursor do górnej lewej pozycji ekranu. \e[D
wypisze 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ę ;)
Operator wsteczny przechwytuje dane wyjściowe polecenia i zwraca je
s = `cls`
puts s
działałoby lepiej, tak myślę.
cls
=> "\ f"
"\f"
co masz, a następnie puts s
wyświetla to. ♀
Zastanawiam się, dlaczego?
Ctrl+L
działa również w terminalu gnome, ale czymś bardziej programowym jestsystem 'clear'