如何清除IRB控制台?

如何清除IRB控制台屏幕?

65362 次浏览

Mac OS XLinux上,可以使用Ctrl + l清除IRB屏幕。

把它扔到%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值打印。

一大堆丑陋的文字

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。

windows用户:

如果你创建一个名为c.bat的bat文件,其内容为:

@echo off
cls

然后,在IRB中,你可以说:

system('c')

清除控制台。我只是想分享一下,因为我觉得这很酷。基本上路径中的任何东西都是可访问的。

我来到这里寻找一种方法来重置tty与irb,因为它不打印换行符或显示我键入的内容,只有一些输出。

1.9.3-p125 :151 >   system 'reset'

终于成功了!

命令 + KmacOS工作得很好。

->(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上是一个奇怪的变通方法。

最后,这一点都不实际。微笑吧!)

在windows中,使用Rails 4,

system('cls')

为我工作

将以下方法添加到~/.irbrc:

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

Cntrl-LCntrl-K工作在常规控制台,但我使用tmux和那些混乱的屏幕在tmux窗口。

conf.return_format = ""从返回值中去掉nil。

今天刚刚发现:在Pry(一个IRB替代方案)中,以.开头的一行输入将被转发到命令shell。这意味着在Mac &Linux,我们可以使用:

. clear

并且,在Windows(命令提示符和Windows终端)上,我们可以使用:

. cls

来源:pry.github.io

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

在Linux Mint 17上,你也可以使用Ctrl + 转变 + l

Ctrl + L

.清除IRB界面
system 'cls'

我在Windows中工作,使用Ruby 2.2.0和rails 4.0

system 'clear'

也适用于rails 4.0吗

< p >方法: <代码> def clear_screen if RUBY_PLATFORM =~ /win32|win64|\。网| windows | | cygwin mingw32 /我 系统(cls) 其他的 系统(清晰的) 结束 结束代码< / > < / p >

或者在IRB中你可以使用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工作。