你如何清除IRB控制台?

时间:2008-09-22 18:24:21

标签: ruby irb

如何清除IRB控制台屏幕?

21 个答案:

答案 0 :(得分:263)

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

答案 1 :(得分:59)

将其扔在%userprofile%\.irbrc内,你很好

def cls
  system('cls')
end

来自IRB clear screen on windows

答案 2 :(得分:38)

在* nix框

`clear`
Windows上的

system 'cls' # works
`cls` # does not work
OSX上的

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

答案 3 :(得分:16)

在Ubuntu 11.10系统上clear将主要清除irb窗口。您将获得返回=> True值。

一大堆丑陋的文字

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

你得到了什么:

 => true 
ruby-1.9.2-p290 :007 > 

答案 4 :(得分:13)

macOS 中的

命令 + K 效果很好。

答案 5 :(得分:9)

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

. clear

更新:不幸的是,它似乎无法在Windows上运行。

来源:Pryrepl.org

答案 6 :(得分:8)

为了清除屏幕,请执行以下操作:

puts "\e[H\e[2J"

P.S。这是在Linux上测试的。

答案 7 :(得分:7)

system 'clear'

也适用于rails 4.0

答案 8 :(得分:6)

puts `clear`

清除屏幕,然后返回在Mac OSX 10.6终端和iTerm2上测试的=> nil

答案 9 :(得分:6)

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

Ctrl + L 清除IRB屏幕。

答案 10 :(得分:4)

在Windows中,使用Rails 4,

system('cls')

为我工作

答案 11 :(得分:3)

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

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

答案 12 :(得分:3)

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

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

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

conf.return_format =“”取消返回值为零。

答案 13 :(得分:3)

Windows用户只需尝试,

system 'cls'

OR

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

答案 14 :(得分:3)

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

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

clear

答案 15 :(得分:1)

这里有很多好的答案,但我常常从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中运行。

答案 16 :(得分:1)

system 'cls' 

适用于Windows,使用Ruby 2.2.0和rails 4.0

答案 17 :(得分: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屏幕,没有多余的空行和“=>没什么“东西。在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上一些奇怪的解决方法。

最后,这有点不实用。只是微笑;)

答案 18 :(得分:0)

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

1.9.3-p125 :151 >   system 'reset'

终于为我做了诀窍!

答案 19 :(得分:0)

对于Windows用户:

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

@echo off
cls

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

system('c')

清除控制台。我以为我会分享,因为我觉得这很酷。基本上可以访问路径中的任何内容。

答案 20 :(得分:-3)

反引号操作符捕获命令的输出并将其返回

s = `cls`
puts s
我想,

会更好。