如何清除IRB控制台?


Answers:


267

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


8
Ctrl+L也可以在gnome-terminal中工作,但是更具编程性的是system 'clear'
vol7ron 2013年

使用zsh ctrl + L无效,ctrl + K无效。(请具体说明我的ZSH)
SidOfc

@SidneyLiebrand我在“噢,我的ZSH”上进行了测试,只有Ctrl + L起作用了
多元化

2
@fanaugen在MacOS上,cmd+k将在终端轻触中清除所有内容,如果使用tmux拆分可视区域,ctrl+L则会做得更好。
范耶

59

把它%userprofile%\.irbrc扔进去就好了

def cls
  system('cls')
end

IRB清除Windows上的屏幕


13
我应该澄清这仅适用于Windows。
本霍夫斯坦

8
system('clear')在Mac上也可以使用。应该注意的是,这将留=> true在控制台的顶部。
Michael Dorst 2013年

1
@拟人化的`system('clear')几乎可以在所有与Unix / Unix类似的系统上运行。
埃德尼尔2014年

@enedil的确如此,但是许多人不知道OS X是一个类似Unix的系统。
Michael Dorst 2014年

@拟人化,因为不是。OS X已通过Open Group的Unix认证。
埃德尼尔2014年

41

在* nix盒子上

`clear`

在Windows上

system 'cls' # works
`cls` # does not work

在OSX上

system 'clear' # works
`clear` # does not work

3
是的,这不起作用。必须做的system('clear')Ctrl+L
Connor Leech 2014年

system 'clear'为我工作,但我得到了: command not found => false
回声

1
您可以clear为此添加一个别名,例如您的pryrc文件。感谢您的分享
James Klein


16

在Ubuntu 11.10系统上,clear大多数情况下会清除irb窗口。您得到=> True打印的返回值。

一大堆丑陋的文字

ruby-1.9.2-p290 :007 > system 'clear'

你会得到什么:

 => true 
ruby-1.9.2-p290 :007 > 

10

刚刚在今天发现了这一点:在Pry(一种IRB替代)中,以a开头的输入.行将被转发到命令外壳。这意味着在Mac和Linux中,我们可以使用:

. clear

更新:不幸的是,它似乎在Windows上不起作用。

资料来源:Pryrepl.org


我只是在Windows上的Ruby 2.0.0p481下使用raw irb尝试过,它不起作用。
约翰·托普利2014年

是。似乎在Windows中不起作用。但是它确实可以在Mac和Linux中运行。
Chandresh Pant 2014年

我最喜欢这个答案。您无需修改​​任何内容,它只是在炮轰。也很容易记住。顺便说一句,. cls应该在Windows上工作。
埃里克·博斯

我不知道哪个命令可以与tmux一起使用。我认为Ctrl + L是thatway_3在下面说的那个。
Pablo



8

在Linux Mint 17上,您也可以使用Ctrl+ Shift+L

要么

Ctrl+ L 清除IRB屏幕。


在终端机应用程序中为Mac OS X.11.1工作
Patrick

@ thatway_3-不错的答案:您如何在Stackoverflow上打印键盘说明?
BKSpurgeon '16


6

方法: def clear_screen if RUBY_PLATFORM =~ /win32|win64|\.NET|windows|cygwin|mingw32/i system('cls') else system('clear') end end

或者在IRB中,您可以使用 system('clear')


5

在Windows中,使用Rails 4,

system('cls')

为我工作


3

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

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

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

conf.return_format =“”采取零关断的返回值。


3

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

3

我已经将此用于可执行文件:

def clear
    system("cls") || system("clear") || puts("\e[H\e[2J")
end

clear


1

我来这里是为了寻找一种使用irb重置tty的方法,因为它不会打印换行符或显示我以某种方式键入的内容,而只是显示一些输出。

1.9.3-p125 :151 >   system 'reset'

终于为我做了把戏!


使用反勾来简化它:`reset`
Tin Man

@the田民-反引号并不总是工作,你是怎么想的,但reset应该工作正常
vol7ron

反引号总是按照我的期望工作,但是多年来,我已经在各种语言中使用它们了。
Tin Man

确实,有时类似于倒钩的确可能是其他一些UTF-8生物。偶尔我修复与实际上是上下引号“文本”文档=的ANSI / ASCII“字符就像在商业SRT文件,其中所有的地狱破散!。
马科斯

1

这里有很多好的答案,但是我经常从Windows进入Mintty的Linux操作系统。关于使用.irbrc的内容,上面我很荣幸,但是想出了这个:

def cls
  puts "\ec\e[3J"
end

def clear
  puts "\e[H\e[2Js"
end

这为您提供了* nix'clear'行为和Windows'cls'行为的选项,如果我真的想对缓冲区进行核对而不是只是将其滚动出视线,我经常会发现它们更有用。

PS类似的变体也可以在.bashrc中使用:

alias cls='echo -e "\ec\e[3J"'

如果有人能找到一种将其实际映射到按键的方法,我很想听听。我真的很想在osx上使用类似于cmd-k的东西,并且可以在Mintty中使用。


0

对于Windows用户:

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

@echo off
cls

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

system('c')

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


0
->(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上某些奇怪问题的解决方法。

最后,这一点都不实际。只是笑一下 ;)


-3

反引号运算符捕获命令的输出并返回

s = `cls`
puts s

我想会更好。


1
失败:您得到此irb(main):004:0> cls=>“ \ f”
Orion Edwards

@OrionEdwards @JesperE第一行向我展示"\f"了您所得到的,然后puts s输出了此信息,我想知道为什么吗?
2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.