如何清除IRB控制台屏幕?
在Mac OS X或Linux上,可以使用Ctrl + l清除IRB屏幕。
把它扔到%userprofile%\.irbrc里面就行了
%userprofile%\.irbrc
def cls system('cls') end
从IRB在窗户上的清晰屏幕。
在*nix盒子上
`clear`
在Windows上
system 'cls' # works `cls` # does not work
在OSX
system 'clear' # works `clear` # does not work
反勾运算符捕获命令的输出并返回它
s = `cls` puts s
我想这样会更好。
在Ubuntu 11.10系统上,clear将主要清除irb窗口。你得到一个返回=> True值打印。
clear
=> True
一大堆丑陋的文字
ruby-1.9.2-p290 :007 > system 'clear'
你能得到什么:
=> true ruby-1.9.2-p290 :007 >
为了清除屏幕,只需要做:
puts "\e[H\e[2J"
附注:这是在Linux上测试的。
puts `clear`
清除屏幕,然后返回=> nil测试在Mac OSX 10.6终端和iTerm2。
=> nil
windows用户:
如果你创建一个名为c.bat的bat文件,其内容为:
@echo off cls
然后,在IRB中,你可以说:
system('c')
清除控制台。我只是想分享一下,因为我觉得这很酷。基本上路径中的任何东西都是可访问的。
我来到这里寻找一种方法来重置tty与irb,因为它不打印换行符或显示我键入的内容,只有一些输出。
1.9.3-p125 :151 > system 'reset'
终于成功了!
命令 + K在macOS工作得很好。
->(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将不会响应结果。
echo?
其次,我打印了一些ANSI控制字符。\e[2J将清除屏幕,而\e[H将把光标移动到屏幕的左上方。\e[D将打印一个空格,然后将光标向后移动,而这在Windows上是一个奇怪的变通方法。
\e[2J
\e[H
\e[D
最后,这一点都不实际。微笑吧!)
在windows中,使用Rails 4,
system('cls')
为我工作
将以下方法添加到~/.irbrc:
~/.irbrc
def clear conf.return_format = "" system('clear') end
Cntrl-L或Cntrl-K工作在常规控制台,但我使用tmux和那些混乱的屏幕在tmux窗口。
Cntrl-L
Cntrl-K
conf.return_format = ""从返回值中去掉nil。
今天刚刚发现:在Pry(一个IRB替代方案)中,以.开头的一行输入将被转发到命令shell。这意味着在Mac &Linux,我们可以使用:
.
. clear
并且,在Windows(命令提示符和Windows终端)上,我们可以使用:
. cls
来源:pry.github.io
Windows用户只需尝试一下,
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
在Linux Mint 17上,你也可以使用Ctrl + 转变 + l
Ctrl + L
我在Windows中工作,使用Ruby 2.2.0和rails 4.0
system 'clear'
也适用于rails 4.0吗
或者在IRB中你可以使用system('clear')
system('clear')
这里有大量的好答案,但我经常从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"'
如果有人能找到一种方法将其映射到按键,我很乐意听到。我真的很想有一些类似于cmd-k在osx上,将在Mintty工作。