คุณจะล้าง IRB Console ได้อย่างไร?


คำตอบ:


267

บนMac OS XหรือLinuxคุณสามารถใช้Ctrl+ Lเพื่อล้างหน้าจอIRB


8
Ctrl+Lทำงานได้ใน gnome-terminal ด้วยเช่นกัน แต่มีบางอย่างที่โปรแกรมให้เลือกอีกมากมายsystem 'clear'
vol7ron

ด้วย zsh ctrl + L ไม่ทำงาน ctrl + K ทำ (โอ้ ZSH ของฉันจะเจาะจง)
SidOfc

@SidneyLiebrand ฉันได้ทดสอบกับ Oh My ZSH และมีเพียง Ctrl + L เท่านั้น
พหุนิยม

2
@fanaugen บน MacOS cmd+kจะล้างข้อมูลทั้งหมดภายในแทปเทอร์มินัลหากคุณใช้ tmux เพื่อแยกส่วนของพื้นที่ภาพctrl+Lจะทำงานได้ดีขึ้น
Fan Yer

59

โยนสิ่งนี้เข้าไปข้างใน%userprofile%\.irbrcและคุณก็ทำได้ดี

def cls
  system('cls')
end

จากหน้าจอที่ชัดเจน IRB บน windows


13
ฉันควรชี้แจงว่าสิ่งนี้ใช้ได้กับ Windows เท่านั้น
Ben Hoffstein

8
system('clear')จะทำงานบน Mac ด้วย ควรสังเกตว่าสิ่งนี้จะปล่อยไว้=> trueที่ด้านบนของคอนโซล
Michael Dorst

1
@ anthropomorphic `ระบบ ('ชัดเจน') จะทำงานได้เกือบทุกระบบเหมือน Unix / Unix
enedil

@enedil นั้นเป็นเรื่องจริงอย่างแน่นอน แต่หลายคนไม่รู้ว่า OS X เป็นระบบที่เหมือนยูนิกซ์
Michael Dorst

@anthropomorphic เพราะมันเป็นไม่ได้ OS X ได้รับการรับรอง Unix จาก Open Group
enedil

41

บน * กล่องห้าม

`clear`

บน Windows

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

บน OSX

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

3
ใช่สิ่งนี้ไม่ทำงาน ต้องทำsystem('clear')หรือCtrl+L
Connor Leech

system 'clear'ทำงานให้ฉัน แต่ฉันได้รับ: command not found => false
echo

1
คุณสามารถเพิ่มนามแฝงเช่นclearไฟล์ pryrc ของคุณสำหรับสิ่งนี้ ขอบคุณสำหรับการแบ่งปัน
James Klein


16

บน Ubuntu 11.10 ระบบclearส่วนใหญ่จะล้างหน้าต่าง irb คุณได้รับผลตอบแทน=> Trueพิมพ์

ความยุ่งเหยิงขนาดใหญ่ของข้อความที่น่าเกลียด

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

คุณได้อะไร:

 => true 
ruby-1.9.2-p290 :007 > 

10

เพิ่งค้นพบสิ่งนี้วันนี้: ใน Pry (ทางเลือก IRB) บรรทัดอินพุตที่ขึ้นต้นด้วย a .จะถูกส่งต่อไปยังเชลล์คำสั่ง ซึ่งหมายความว่าใน mac & Linux เราสามารถใช้:

. clear

อัปเดต: น่าเสียดายที่ดูเหมือนว่ามันจะไม่ทำงานบน Windows

ที่มา: Pryrepl.org


ฉันเพิ่งลองใช้ irb ดิบภายใต้ Ruby 2.0.0p481 บน Windows และมันไม่ทำงาน
John Topley

ใช่. ดูเหมือนว่ามันจะไม่ทำงานใน windows แต่มันใช้งานได้ดีใน mac & Linux
กางเกง Chandresh

ฉันชอบคำตอบนี้ดีที่สุด คุณไม่ต้องแก้ไขอะไรเลยและมันก็แค่ปอกเปลือก ง่ายต่อการจดจำเช่นกัน Btw . clsควรทำงานบน Windows
Eric Boehs

ฉันสงสัยว่าคำสั่งใดจะทำงานกับ tmux ฉันคิดว่า Ctrl + L เป็นตัวเลือกตามที่ _3 บอกไว้ด้านล่าง
ปาโบล



8

บน Linux Mint 17 คุณสามารถใช้Ctrl+ Shift+ ได้เช่นกันL

หรือ

Ctrl+ L เพื่อล้างหน้าจอ IRB


ใช้งานได้กับ Mac OS X.11.1 ในแอป Terminal
Patrick

@ thatway_3 - คำตอบที่ดี: คุณพิมพ์คำสั่งคีย์บอร์ดบน Stackoverflow ได้อย่างไร
BKSpurgeon




3

เพิ่มวิธีการต่อไปนี้เพื่อ~/.irbrc:

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

Cntrl-L หรือ Cntrl-K ทำงานในคอนโซลปกติ แต่ฉันใช้ tmux และทำให้หน้าจอสกปรกภายในหน้าต่าง tmux

conf.return_format = "" ใช้ศูนย์ออกค่าตอบแทน


3

ผู้ใช้ Windows ก็ลอง

system 'cls'

หรือ

system('cls')

หน้าตาแบบนี้ในหน้าต่าง IRB

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

เคล็ดลับสำหรับฉันเป็นทับทิม 1.9.3 อย่างไรก็ตามคำสั่งต่อไปไม่ได้ทำงานและกลับ=> nil,

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

3

ฉันใช้สิ่งนี้กับไฟล์ที่ปฏิบัติการได้:

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

clear


1

ฉันมาที่นี่เพื่อหาวิธีรีเซ็ต tty ด้วย irb เนื่องจากมันไม่ได้พิมพ์บรรทัดใหม่หรือแสดงสิ่งที่ฉันพิมพ์อย่างใดเพียงบางเอาต์พุต

1.9.3-p125 :151 >   system 'reset'

ในที่สุดก็หลอกลวงให้ฉัน!


ทำให้มันง่ายขึ้นโดยใช้เครื่องหมายขีดหลัง: `reset`.
ชายดีบุก

@The Tin Man - backticks ไม่ได้ทำงานอย่างที่คุณคิดเสมอไป แต่resetควรจะทำงานได้ดี
vol7ron

Backticks ทำงานตามที่ฉันคาดหวัง แต่ฉันใช้มันเป็นภาษาต่าง ๆ มาหลายปีแล้ว
ชายดีบุก

อันที่จริงบางครั้งสิ่งที่มีลักษณะคล้ายกับ backtick อาจเป็นสิ่งมีชีวิต UTF-8 อื่น ๆ บางครั้งฉันแก้ไขเอกสาร "text" ที่มีเครื่องหมายอัญประกาศบนและล่างที่เป็นจริง! = ตัวอักษร ANSI / ASCII "เช่นเดียวกับไฟล์ SRT เชิงพาณิชย์ที่ซึ่งนรกทั้งหมดแตกหลวม
Marcos

1

ตันคำตอบที่ดีที่นี่ แต่ฉันมักจะห่างไกลลงในกล่อง linux กับ Mintty จาก windows ความรุ่งโรจน์ข้างต้นเกี่ยวกับการใช้. irbrc แต่เกิดขึ้นกับสิ่งนี้:

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

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

สิ่งนี้ทำให้คุณมีตัวเลือกสำหรับทั้งพฤติกรรม * nix 'clear' และพฤติกรรมของ 'cls' ของ Windows ซึ่งฉันมักจะพบว่ามีประโยชน์มากกว่าถ้าฉันต้องการ nuke buffer มากกว่าแค่เลื่อนมันออกไปนอกมุมมอง

PS ตัวแปรที่คล้ายกันยังทำงานใน. bashrc:

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

หากใครสามารถหาวิธีที่จะแมปการกดแป้นนั้นจริง ๆ ฉันก็อยากจะฟัง ฉันอยากจะมีบางสิ่งบางอย่างที่คล้ายกับ cmd-k บน osx ที่จะทำงานใน Mintty


0

สำหรับผู้ใช้ windows:

หากคุณสร้างชื่อไฟล์ค้างคาว c.bat ซึ่งเนื้อหาคือ:

@echo off
cls

จากนั้นใน IRB คุณสามารถพูดได้:

system('c')

เพื่อล้างคอนโซล ฉันแค่คิดว่าฉันจะแบ่งปันเพราะฉันคิดว่ามันค่อนข้างเย็น สิ่งสำคัญในเส้นทางสามารถเข้าถึงได้


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]

นี่จะเป็นการล้างหน้าจอ IRB ของคุณอย่างสมบูรณ์โดยไม่มีบรรทัดว่างเพิ่มเติมและ "=> ไม่มี" ทดสอบบน Linux / Windows

หนึ่งซับนี้สามารถขยายได้เป็น:

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

สิ่งนี้ใช้ลูกเล่นมากมาย

ประการแรก IRB จะโทรecho?เพื่อตรวจสอบว่าควรพิมพ์ผลลัพธ์หรือไม่ ฉันบันทึกวิธีการแล้วกำหนดใหม่ด้วยวิธีการที่เรียกคืน defination แต่กลับเท็จดังนั้น irb จะไม่สะท้อนผล

ประการที่สองฉันพิมพ์ตัวควบคุม ANSI บางตัว \e[2Jจะทำความสะอาดหน้าจอและ\e[Hจะเลื่อนเคอร์เซอร์ไปที่ตำแหน่งด้านซ้ายบนของหน้าจอ \e[Dจะพิมพ์ช่องว่างแล้วเลื่อนเคอร์เซอร์ไปด้านหลังในขณะที่นี่เป็นการแก้ปัญหาสำหรับบางสิ่งที่แปลกใน Windows

ในที่สุดนี่ก็เป็นสิ่งที่ไม่เป็นประโยชน์เลย แค่ยิ้ม;)


-3

ผู้ประกอบการ backtick จับเอาท์พุทของคำสั่งและส่งกลับ

s = `cls`
puts s

จะทำงานได้ดีขึ้นฉันเดา


1
สิ่งนี้ล้มเหลว: คุณได้รับ irb (main): 004: 0> cls=> "\ f"
Orion Edwards

@OrionEdwards @JesperE บรรทัดแรกแสดงให้ฉันเห็นว่า"\f"อะไรคือสิ่งที่คุณได้รับแล้วputs sเอาท์พุทสิ่งนี้ฉันสงสัยว่าทำไม
โชคดี
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.