Làm thế nào để bạn xóa màn hình giao diện điều khiển IRB?
Làm thế nào để bạn xóa màn hình giao diện điều khiển IRB?
Câu trả lời:
Trên Mac OS X hoặc Linux, bạn có thể sử dụng Ctrl+ Lđể xóa màn hình IRB .
cmd+k
sẽ xóa tất cả trong một thiết bị đầu cuối, nếu bạn sử dụng tmux để phân chia khu vực thị giác, ctrl+L
sẽ làm việc tốt hơn.
Ném nó vào trong %userprofile%\.irbrc
và bạn tốt
def cls
system('cls')
end
system('clear')
cũng sẽ hoạt động trên máy Mac. Cần lưu ý rằng điều này sẽ để lại => true
ở đầu của giao diện điều khiển.
Trên hộp * nix
`clear`
trên Windows
system 'cls' # works
`cls` # does not work
trên OSX
system 'clear' # works
`clear` # does not work
system('clear')
hoặc Ctrl
+L
system 'clear'
làm việc cho tôi nhưng tôi đã nhận được: command not found => false
clear
tập tin pryrc của bạn cho việc này. Cảm ơn đã chia sẻ
Command+ Ktrong macOS hoạt động tuyệt vời.
Trên hệ thống Ubuntu 11.10 clear
sẽ xóa cửa sổ irb. Bạn được trả lại=> True
giá trị được in.
Một mớ hỗn độn lớn của văn bản xấu xí
ruby-1.9.2-p290 :007 > system 'clear'
những gì bạn nhận được:
=> true
ruby-1.9.2-p290 :007 >
Mới phát hiện ra điều này ngày hôm nay: Trong Pry (một thay thế IRB), một dòng đầu vào bắt đầu bằng một .
sẽ được chuyển tiếp đến vỏ lệnh. Có nghĩa là trong mac & Linux, chúng ta có thể sử dụng:
. clear
Cập nhật: Thật không may, nó dường như không hoạt động trên Windows.
Nguồn: Pryrepl.org
. cls
nên hoạt động trên Windows.
Để xóa màn hình, chỉ cần làm:
puts "\e[H\e[2J"
PS Điều này đã được thử nghiệm trên Linux.
`clear`
, và tương đương với puts %x(/usr/bin/clear)
.
system 'clear'
Nên làm việc cho đường ray 4.0 là tốt
Trên Linux Mint 17 bạn cũng có thể sử dụng Ctrl+ Shift+L
hoặc là
Ctrl+ L để xóa màn hình IRB.
puts `clear`
Xóa màn hình và sau đó trả về => nil
Đã kiểm tra trên Mac OSX 10.6 Terminal và iTerm2.
Phương pháp:
def clear_screen
if RUBY_PLATFORM =~ /win32|win64|\.NET|windows|cygwin|mingw32/i
system('cls')
else
system('clear')
end
end
Hoặc trong IRB bạn có thể sử dụng system('clear')
Thêm phương thức sau vào ~/.irbrc
:
def clear
conf.return_format = ""
system('clear')
end
Cntrl-L
hoặc là Cntrl-K
làm việc trong bảng điều khiển thông thường nhưng tôi đang sử dụng tmux và những thứ đó làm rối màn hình bên trong cửa sổ tmux.
Các conf.return_format = "" lấy con số không ra khỏi giá trị trả về.
Người dùng Windows chỉ cần thử,
system 'cls'
HOẶC LÀ
system('cls')
Trông như thế này trong cửa sổ IRB,
irb(main):333:0> system 'cls'
irb(main):007:0> system('cls')
Đã lừa tôi trong ruby 1.9.3. Tuy nhiên, các lệnh sau không hoạt động và trả về => nil
,
system('clear')
system 'clear'
system `cls` #using the backquotes below ESC Key in windows
Tôi đã sử dụng điều này cho các tập tin thực thi:
def clear
system("cls") || system("clear") || puts("\e[H\e[2J")
end
clear
system 'cls'
Hoạt động với tôi trong Windows, với Ruby 2.2.0 và rails 4.0
Tôi đến đây để tìm cách thiết lập lại tty bằng irb, vì nó không in dòng mới hoặc hiển thị những gì tôi đã nhập bằng cách nào đó, chỉ một số đầu ra.
1.9.3-p125 :151 > system 'reset'
cuối cùng đã làm mẹo cho tôi!
`reset`
.
reset
nên hoạt động tốt
Hàng tấn câu trả lời hay ở đây, nhưng tôi thường từ xa vào một hộp linux với Mintty từ windows. Kudos nói ở trên về việc sử dụng .irbrc, nhưng đã đưa ra điều này:
def cls
puts "\ec\e[3J"
end
def clear
puts "\e[H\e[2Js"
end
Điều này cung cấp cho bạn các tùy chọn cho cả hành vi * nix 'rõ ràng và hành vi' cls 'của Windows, điều mà tôi thường thấy hữu ích hơn nếu tôi thực sự muốn nuke bộ đệm thay vì chỉ cuộn nó ra khỏi tầm nhìn.
PS một biến thể tương tự cũng hoạt động trong .bashrc:
alias cls='echo -e "\ec\e[3J"'
Nếu bất cứ ai cũng có thể tìm ra cách thực sự ánh xạ nó tới tổ hợp phím, tôi rất muốn nghe nó. Tôi thực sự muốn có một cái gì đó giống với cmd-k trên osx sẽ hoạt động trong Mintty.
Đối với người dùng windows:
Nếu bạn tạo một tên tập tin bat c.bat có nội dung là:
@echo off
cls
Sau đó, trong IRB, bạn có thể nói:
system('c')
để xóa giao diện điều khiển. Tôi chỉ nghĩ rằng tôi sẽ chia sẻ bởi vì tôi nghĩ rằng đó là khá mát mẻ. Về cơ bản bất cứ điều gì trong đường dẫn có thể truy cập.
->(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]
Điều này sẽ xóa hoàn toàn màn hình IRB của bạn, không có thêm dòng trống nào và những thứ khác => nil. Đã thử nghiệm trên Linux / Windows.
Điều này có thể được mở rộng như:
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
Điều này sử dụng rất nhiều thủ thuật.
Đầu tiên, irb sẽ gọi echo?
để kiểm tra xem kết quả có được in hay không. Tôi đã lưu phương thức, sau đó xác định lại bằng phương thức khôi phục lại định nghĩa nhưng trả về false để irb sẽ không lặp lại kết quả.
Thứ hai, tôi đã in một số ký tự điều khiển ANSI. \e[2J
sẽ làm sạch màn hình và \e[H
sẽ di chuyển con trỏ đến vị trí trên bên trái của màn hình. \e[D
sẽ in một khoảng trắng và sau đó di chuyển trở lại con trỏ trong khi đây là cách giải quyết cho một cái gì đó lạ trên Windows.
Cuối cùng thì đây là loại không thực tế chút nào. Chỉ cười thôi;)
Toán tử backtick nắm bắt đầu ra của lệnh và trả về nó
s = `cls`
puts s
Tôi sẽ làm việc tốt hơn, tôi đoán.
cls
=> "\ f"
"\f"
đó là những gì bạn nhận được và sau đó puts s
xuất ra cái này ♀
tôi tự hỏi tại sao?
Ctrl+L
cũng hoạt động trong thiết bị đầu cuối gnome, nhưng một cái gì đó có lập trình hơnsystem 'clear'