题
如何清除IRB控制台屏幕?
解决方案
在 Mac OS X 或 Linux 上,您可以使用 Ctrl + L 清除 IRB 屏幕。
其他提示
在* nix框
`clear`
Windows上的
system 'cls' # works
`cls` # does not work
OSX上的
system 'clear' # works
`clear` # does not work
在Ubuntu 11.10系统上 clear
将主要清除irb窗口。你得到一个返回 =>打印了真
值。
一大堆丑陋的文字
ruby-1.9.2-p290 :007 > system 'clear'
你得到了什么:
=> true
ruby-1.9.2-p290 :007 >
命令 + K 效果很好。
今天刚刚发现:在Pry(一个IRB替代品)中,以。
开头的输入行将被转发到命令shell。这意味着在mac& Linux,我们可以使用:
. clear
更新:不幸的是,它似乎无法在Windows上运行。
来源: Pryrepl.org
为了清除屏幕,请执行以下操作:
puts "\e[H\e[2J"
P.S。这是在Linux上测试的。
system 'clear'
也适用于rails 4.0
puts `clear`
清除屏幕,然后返回 => nil
在Mac OSX 10.6终端和iTerm2上测试。
在Linux Mint 17上你也可以使用 Ctrl + Shift + L
或
Ctrl + L 清除IRB屏幕。
在Windows中,使用Rails 4,
system('cls')
为我工作
将以下方法添加到〜/ .irbrc
:
def clear
conf.return_format = ""
system('clear')
end
Cntrl-L
或 Cntrl-K
在常规控制台中工作,但我正在使用tmux,那些混乱了tmux窗口内的屏幕。
conf.return_format =""从返回值中取零。
Windows用户只需尝试,
system 'cls'
OR
system('cls')
在IRB窗口中看起来像这样,
irb(main):333:0> system 'cls'
irb(main):007:0> system('cls')
在ruby 1.9.3中为我做了诀窍。但是,以下命令不起作用并返回 =>零代码>,
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
方法:
def clear_screen
如果RUBY_PLATFORM =〜/ win32 | win64 |\.NET |windows | cygwin |mingw32 / i
系统( 'CLS')
其他
系统(“清除”)
结束
端代码>
或者在IRB中,您可以使用 system('clear')
system 'cls'
适用于Windows,使用Ruby 2.2.0和rails 4.0
这里有很多好的答案,但我常常从Windows远程进入带有Mintty的linux盒子。感谢上面关于使用.irbrc,但想出了这个:
def cls
puts "\ec\e[3J"
end
def clear
puts "\e[H\e[2Js"
end
这为您提供了* nix'clear'行为和Windows'cls'行为的选项,如果我真的想要修改缓冲区而不是仅仅将其滚出视图,我常常会发现它更有用。
P.S。类似的变体也适用于.bashrc:
alias cls='echo -e "\ec\e[3J"'
如果有人能找到实际将其映射到按键的方法,我很乐意听到它。我真的希望在osx上有类似于cmd-k的东西,它可以在Mintty中运行。
我来到这里寻找一种用irb重置tty的方法,因为它没有打印换行符或显示我输入的内容,只有一些输出。
1.9.3-p125 :151 > system '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屏幕,没有多余的空行和“ =>零”东西。在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
我想,会更好。