193

如何清除 IRB 控制台屏幕?

4

21 回答 21

277

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

于 2008-09-22T18:24:57.810 回答
61

把这个扔进去%userprofile%\.irbrc,你很好

def cls
  system('cls')
end

Windows 上的 IRB 清除屏幕

于 2008-09-22T18:25:25.607 回答
42

在 *nix 盒子上

`clear`

在 Windows 上

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

在 OSX 上

system 'clear' # works
`clear` # does not work
于 2008-09-22T18:27:23.340 回答
24

CommandmacOSK中的+效果很好。

于 2012-11-01T22:49:07.590 回答
16

在 Ubuntu 11.10 系统clear上大部分会清除 irb 窗口。你得到一个=> True打印的返回值。

一大堆丑陋的文字

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

你得到什么:

 => true 
ruby-1.9.2-p290 :007 > 
于 2011-12-06T15:55:55.310 回答
12

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

. clear

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

. cls

来源:pry.github.io

于 2014-07-17T07:09:35.903 回答
11
system 'clear'

也应该适用于 rails 4.0

于 2015-10-20T09:54:24.480 回答
9

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

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

PS 这是在 Linux 上测试的。

于 2012-02-14T16:11:16.743 回答
9

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

或者

Ctrl+L 清除 IRB 屏幕。

于 2015-09-21T11:52:48.053 回答
6
puts `clear`

清除屏幕,然后返回=> nilTested on Mac OSX 10.6 Terminal 和 iTerm2。

于 2012-04-24T03:06:06.890 回答
6

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

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

于 2016-07-22T16:29:18.090 回答
5

在 Windows 中,使用 Rails 4,

system('cls')

为我工作

于 2014-01-16T15:18:32.477 回答
4

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

于 2016-08-21T01:26:39.457 回答
3

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

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

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

conf.return_format = "" 将 nil 从返回值中取出

于 2014-07-09T20:38:16.840 回答
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
于 2014-09-29T12:11:02.473 回答
3

我已将其用于可执行文件:

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

clear
于 2014-11-20T17:18:50.993 回答
2
system 'cls' 

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

于 2015-09-22T14:42:29.210 回答
1

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

1.9.3-p125 :151 >   system 'reset'

终于为我成功了!

于 2012-10-17T21:07:46.140 回答
0

对于 Windows 用户:

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

@echo off
cls

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

system('c')

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

于 2012-08-23T21:34:57.640 回答
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 上某些奇怪事物的解决方法。

最后,这根本不实用。只是笑一下 ;)

于 2013-10-19T14:50:14.103 回答
-3

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

s = `cls`
puts s

我想会更好。

于 2008-09-22T19:04:47.697 回答