Bagaimana Anda Mengosongkan IRB Console?


Jawaban:


267

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


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 .


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

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


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 > 

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


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.


Ini hanya keluaran dari `clear`, dan setara dengan puts %x(/usr/bin/clear).
Todd A. Jacobs


8

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

atau

Ctrl+ L untuk menghapus layar IRB.


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

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


5

Di windows, menggunakan Rails 4,

system('cls')

bekerja untukku


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.


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

3

Saya telah menggunakan ini untuk file yang dapat dieksekusi:

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

clear

2
system 'cls' 

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


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!


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.


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.


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


-3

Operator backtick menangkap output dari perintah dan mengembalikannya

s = `cls`
puts s

akan bekerja lebih baik, kurasa.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.