Bagaimana Anda Mengosongkan IRB Console?

186

Bagaimana Anda menghapus layar konsol IRB?

John Topley
sumber

Jawaban:

267

Pada Mac OS X atau Linux Anda dapat menggunakan Ctrl+ Luntuk menghapus layar IRB .

John Topley
sumber
8
Ctrl+Ljuga bekerja di gnome-terminal, tetapi sesuatu yang lebih terprogram adalahsystem 'clear'
vol7ron
Dengan zsh ctrl + L tidak berfungsi, ctrl + K tidak. (Oh My ZSH lebih spesifik)
SidOfc
@ SidneyLiebrand Saya menguji pada Oh My ZSH dan hanya Ctrl + L yang bekerja
pluralisme
2
@fanaugen Pada MacOS, cmd+kakan menghapus semua dalam ketukan terminal, jika Anda menggunakan tmux untuk membagi area area visual, ctrl+Lakan melakukan pekerjaan yang lebih baik.
Fan Yer
59

Lemparkan ini ke dalam %userprofile%\.irbrcdan Anda baik-baik saja

def cls
  system('cls')
end

Dari layar jelas IRB di windows .

Ben Hoffstein
sumber
13
Saya harus mengklarifikasi bahwa ini hanya berlaku untuk Windows.
Ben Hoffstein
8
system('clear')juga akan berfungsi pada Mac. Perlu dicatat bahwa ini akan meninggalkan => truedi bagian atas konsol.
Michael Dorst
1
@anthropomorphic `system ('clear') akan bekerja di hampir setiap sistem seperti Unix / Unix.
enedil
@enedil Itu benar sekali, namun banyak orang tidak tahu bahwa OS X adalah sistem mirip Unix.
Michael Dorst
@anthropomorphic karena tidak . OS X disertifikasi Unix oleh Open Group.
enedil
41

Pada * kotak nix

`clear`

di Windows

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

di OSX

system 'clear' # works
`clear` # does not work
ASHelly
sumber
3
ya ini tidak berhasil. Harus melakukan system('clear')atau Ctrl+L
Connor Leech
system 'clear'bekerja untuk saya tetapi saya dapat: command not found => false
gema
1
Anda dapat menambahkan alias seperti clearAnda file pryrc Anda untuk ini. Terima kasih telah berbagi
James Klein
21

Command+ Kdi macOS berfungsi dengan baik.

pengguna1323136
sumber
16

Pada Ubuntu 11.10 sistem clearsebagian besar akan menghapus jendela irb. Anda mendapatkan => Truenilai kembali yang dicetak.

Kekacauan teks yang jelek

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

apa yang kamu dapatkan:

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

Baru ditemukan hari ini: Di ​​Pry (sebuah alternatif IRB), satu baris input yang dimulai dengan sebuah .akan diteruskan ke shell perintah. Yang berarti di mac & Linux, kita dapat menggunakan:

. clear

Pembaruan: Sayangnya, sepertinya tidak berfungsi di Windows.

Sumber: Pryrepl.org

Celana Chandresh
sumber
Saya baru saja mencoba menggunakan irb mentah di bawah Ruby 2.0.0p481 di Windows dan tidak berhasil.
John Topley
Iya. Sepertinya tidak berfungsi di windows. Tapi itu pasti berhasil di mac & Linux.
Chandresh Pant
Saya suka jawaban ini yang terbaik. Anda tidak perlu mengubah apa pun dan itu hanya menghabiskan. Mudah diingat juga. Btw, . clsharus bekerja di Windows.
Eric Boehs
Saya bertanya-tanya perintah mana yang akan bekerja dengan tmux. Saya pikir Ctrl + L adalah seperti yang thatway_3 katakan di bawah.
Pablo
9

Untuk menghapus layar cukup lakukan:

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

PS Ini diuji di Linux.

Sujit Kumar
sumber
Ini hanya keluaran dari `clear`, dan setara dengan puts %x(/usr/bin/clear).
Todd A. Jacobs
9
system 'clear'

Harus bekerja untuk rel 4.0 juga

Arvind singh
sumber
8

Di Linux Mint 17 Anda juga dapat menggunakan Ctrl+ Shift+L

atau

Ctrl+ L untuk menghapus layar IRB.

thatway_3
sumber
Bekerja untuk Mac OS X.11.1 di aplikasi Terminal
Patrick
@ thatway_3 - jawaban yang bagus: bagaimana Anda mencetak instruksi keyboard di Stackoverflow?
BKSpurgeon
6
puts `clear`

Hapus layar dan kemudian kembali => nilDiuji pada Mac OSX 10.6 Terminal dan iTerm2.

Lucas Rockett Gutterman
sumber
6

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

Atau di IRB bisa Anda gunakan system('clear')

Stephen Ross
sumber
5

Di windows, menggunakan Rails 4,

system('cls')

bekerja untukku

Clay H
sumber
3

Tambahkan metode berikut ke ~/.irbrc:

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

Cntrl-Latau Cntrl-K bekerja di konsol biasa tapi saya menggunakan tmux dan mereka mengacaukan layar di dalam jendela tmux.

The conf.return_format = "" mengambil nil off nilai kembali.

TheFed
sumber
3

Pengguna Windows cukup mencoba,

system 'cls'

ATAU

system('cls')

Sepertinya ini di jendela IRB,

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

Apakah trik untuk saya di ruby ​​1.9.3. Namun perintah berikut ini tidak berfungsi dan dikembalikan => nil,

system('clear')
system 'clear'
system `cls`       #using the backquotes below ESC Key in windows
Beruntung
sumber
3

Saya telah menggunakan ini untuk file yang dapat dieksekusi:

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

clear
avinashbot
sumber
2
system 'cls' 

Bekerja untuk saya di Windows, dengan Ruby 2.2.0 dan rails 4.0

saadibabar
sumber
Apakah maksud Anda Rails 4?
Undo
1

Saya datang ke sini mencari cara untuk mengatur ulang tty dengan irb, karena tidak mencetak baris baru atau menunjukkan apa yang saya ketikkan entah bagaimana, hanya beberapa output.

1.9.3-p125 :151 >   system 'reset'

akhirnya melakukan trik untuk saya!

Marcos
sumber
menyederhanakannya menggunakan kutu kembali: `reset`.
the Tin Man
@ the Tin Man - backticks tidak selalu beroperasi seperti yang Anda pikirkan, tetapi resetharus bekerja dengan baik
vol7ron
Backticks selalu berfungsi seperti yang saya harapkan, tetapi kemudian, saya telah menggunakannya dalam berbagai bahasa selama bertahun-tahun.
the Tin Man
Memang, kadang-kadang apa yang menyerupai backtick mungkin memang beberapa makhluk UTF-8 lainnya. Kadang-kadang saya memperbaiki "teks" dokumen dengan tanda kutip atas dan bawah yang sebenarnya! = Karakter ANSI / ASCII. Seperti dalam file SRT komersial, di mana semua kacau
Marcos
1

Banyak jawaban bagus di sini, tapi saya sering jauh ke kotak linux dengan Mintty dari windows. Kudos ke atas tentang menggunakan .irbrc, tetapi datang dengan ini:

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

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

Ini memberi Anda opsi untuk perilaku * nix 'clear' dan perilaku Windows 'cls', yang sering saya temukan lebih berguna jika saya benar-benar ingin mem-buffer nuklir daripada hanya menggulirkannya keluar dari tampilan.

PS varian yang serupa juga berfungsi di .bashrc:

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

Jika ada yang bisa menemukan cara untuk benar-benar memetakan keystroke, saya ingin mendengarnya. Saya benar-benar ingin memiliki sesuatu yang mirip dengan cmd-k di osx yang akan bekerja di Mintty.

erich2k8
sumber
0

Untuk pengguna windows:

Jika Anda membuat nama file bat c.bat yang isinya adalah:

@echo off
cls

Kemudian, di IRB, Anda dapat mengatakan:

system('c')

untuk menghapus konsol. Saya hanya berpikir saya akan berbagi karena saya pikir itu keren. Pada dasarnya apa pun di jalur dapat diakses.

rawan kecelakaan
sumber
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]

Ini akan sepenuhnya menghapus layar IRB Anda, tanpa garis-garis kosong ekstra dan "=> nil". Diuji di Linux / Windows.

One-liner ini dapat diperluas sebagai:

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

Ini menggunakan banyak trik.

Pertama, irb akan menelepon echo?untuk memeriksa apakah hasilnya harus dicetak. Saya menyimpan metode, kemudian mendefinisikan kembali dengan metode yang mengembalikan definisi tetapi mengembalikan false sehingga irb tidak akan mengulangi hasilnya.

Kedua, saya mencetak beberapa karakter kontrol ANSI. \e[2Jakan membersihkan layar dan \e[Hakan memindahkan kursor ke posisi kiri atas layar. \e[Dakan mencetak spasi dan kemudian memindahkan kembali kursor sementara ini merupakan solusi untuk sesuatu yang aneh pada Windows.

Akhirnya ini agak tidak praktis sama sekali. Hanya tersenyum ;)

orzFly
sumber
-3

Operator backtick menangkap output dari perintah dan mengembalikannya

s = `cls`
puts s

akan bekerja lebih baik, kurasa.

JesperE
sumber
1
Ini gagal: Anda mendapatkan irb ini (utama): 004: 0> cls=> "\ f"
Orion Edwards
@OrionEdwards @JesperE baris pertama menunjukkan kepada saya "\f"mana yang Anda dapatkan dan kemudian puts smenampilkan ini, saya ingin tahu mengapa?
Lucky