【发布时间】:2010-09-12 02:37:12
【问题描述】:
如何清除 IRB 控制台屏幕?
【问题讨论】:
如何清除 IRB 控制台屏幕?
【问题讨论】:
在 Mac OS X 或 Linux 上,您可以使用 Ctrl + L 来清除 IRB 屏幕。
【讨论】:
Ctrl+L 也适用于 gnome-terminal,但更程序化的是 system 'clear'
cmd+k 将在终端点击内清除所有内容,如果您使用 tmux 分割可视区域的区域,ctrl+L 会做得更好。
【讨论】:
system('clear') 也可以在 Mac 上运行。需要注意的是,这会将=> true 留在控制台顶部。
在 *nix 盒子上
`clear`
在 Windows 上
system 'cls' # works
`cls` # does not work
在 OSX 上
system 'clear' # works
`clear` # does not work
【讨论】:
system('clear') 或Ctrl + L
system 'clear' 为我工作,但我得到了: command not found => false
clear 您的 pryrc 文件。感谢分享
Command + K 效果很好。
【讨论】:
在 Ubuntu 11.10 系统上clear 将主要清除 irb 窗口。你会得到一个返回 => True 打印值。
一大堆丑陋的文字
ruby-1.9.2-p290 :007 > system 'clear'
你得到了什么:
=> true
ruby-1.9.2-p290 :007 >
【讨论】:
今天刚刚发现:在 Pry(IRB 替代方案)中,以. 开头的输入行将被转发到命令 shell。这意味着在 Mac 和 Linux 上,我们可以使用:
. clear
而且,在 Windows(命令提示符和 Windows 终端)上,我们可以使用:
. cls
【讨论】:
. cls 应该可以在 Windows 上运行。
system 'clear'
应该也适用于 rails 4.0
【讨论】:
为了清除屏幕,只需执行以下操作:
puts "\e[H\e[2J"
附:这是在 Linux 上测试的。
【讨论】:
`clear`的输出,相当于puts %x(/usr/bin/clear)。
在 Linux Mint 17 上,您也可以使用 Ctrl + Shift + L
或
Ctrl + L 清除 IRB 屏幕。
【讨论】:
puts `clear`
清除屏幕,然后返回=> nil 在 Mac OSX 10.6 终端和 iTerm2 上测试。
【讨论】:
方法:
def clear_screen
if RUBY_PLATFORM =~ /win32|win64|\.NET|windows|cygwin|mingw32/i
system('cls')
else
system('clear')
end
end
或者在 IRB 中你可以使用system('clear')
【讨论】:
在 Windows 中,使用 Rails 4,
system('cls')
为我工作
【讨论】:
这里有很多很好的答案,但我经常从 Windows 远程进入一个装有 Mintty 的 linux 盒子。对上述使用 .irbrc 表示赞赏,但想出了这个:
def cls
puts "\ec\e[3J"
end
def clear
puts "\e[H\e[2Js"
end
这为您提供了 *nix 'clear' 行为和 Windows 'cls' 行为的选项,如果我真的想核对缓冲区而不是仅仅将其滚动到视野之外,我通常会发现这更有用。
附:类似的变体也适用于 .bashrc:
alias cls='echo -e "\ec\e[3J"'
如果有人能找到一种方法将其实际映射到按键,我很想听听。我真的很想在 osx 上有类似于 cmd-k 的东西,可以在 Mintty 中使用。
【讨论】:
将以下方法添加到~/.irbrc:
def clear
conf.return_format = ""
system('clear')
end
Cntrl-L 或 Cntrl-K 在常规控制台中工作,但我使用的是 tmux,而那些在 tmux 窗口内弄乱了屏幕。
conf.return_format = "" 去掉返回值的 nil。
【讨论】:
Windows 用户只需尝试,
system 'cls'
或
system('cls')
在 IRB 窗口中看起来像这样,
irb(main):333:0> system 'cls'
irb(main):007:0> system('cls')
在 ruby 1.9.3 中为我做了诀窍。但是以下命令不起作用并返回=> nil,
system('clear')
system 'clear'
system `cls` #using the backquotes below ESC Key in windows
【讨论】:
我已将它用于可执行文件:
def clear
system("cls") || system("clear") || puts("\e[H\e[2J")
end
clear
【讨论】:
system 'cls'
适用于 Windows,使用 Ruby 2.2.0 和 rails 4.0
【讨论】:
我来这里是为了寻找一种用 irb 重置 tty 的方法,因为它没有打印换行符或显示我输入的内容,只有一些输出。
1.9.3-p125 :151 > system 'reset'
终于成功了!
【讨论】:
`reset`.
reset 应该可以正常工作
Windows 用户:
如果你创建一个bat文件名为c.bat,其内容为:
@echo off
cls
然后,在 IRB 中,你可以说:
system('c')
清除控制台。我只是想我会分享,因为我觉得那很酷。基本上路径中的任何东西都可以访问。
【讨论】:
->(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 屏幕,没有多余的空行和“=> nil”的东西。在 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? 来检查是否应该打印结果。我保存了该方法,然后使用恢复定义但返回 false 的方法重新定义,因此 irb 不会回显结果。
其次,我打印了一些 ANSI 控制字符。 \e[2J 将清理屏幕,\e[H 会将光标移动到屏幕的左上角。 \e[D 将打印一个空格,然后将光标移回,而这是在 Windows 上解决某些奇怪问题的一种解决方法。
最后,这根本不实用。只是微笑;)
【讨论】:
反引号运算符捕获命令的输出并将其返回
s = `cls`
puts s
我想会更好。
【讨论】:
cls => "\f"
"\f" 这是你得到的,然后puts s 输出这个♀ 我想知道为什么?