【问题标题】:How Do You Clear The IRB Console?你如何清除 IRB 控制台?
【发布时间】:2010-09-12 02:37:12
【问题描述】:

如何清除 IRB 控制台屏幕?

【问题讨论】:

    标签: ruby irb


    【解决方案1】:

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

    【讨论】:

    • Ctrl+L 也适用于 gnome-terminal,但更程序化的是 system 'clear'
    • 使用 zsh ctrl + L 不起作用, ctrl + K 起作用。 (哦,我的 ZSH 是具体的)
    • @SidneyLiebrand 我在 Oh My ZSH 上测试过,只有 Ctrl + L 有效
    • @fanaugen 在 MacOS 上,cmd+k 将在终端点击内清除所有内容,如果您使用 tmux 分割可视区域的区域,ctrl+L 会做得更好。
    • 我可以确认这也适用于 Windows 10,无论是在命令提示符下还是在 WSL(运行 Ubuntu)上。在 WSL 中,它会将提示推到顶部(历史仍然可以滚动),但在命令提示符中,它也会清除所有历史记录。
    【解决方案2】:

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

    def cls
      system('cls')
    end
    

    来自IRB clear screen on windows。

    【讨论】:

    • 我应该澄清这仅适用于 Windows。
    • system('clear') 也可以在 Mac 上运行。需要注意的是,这会将=> true 留在控制台顶部。
    • @anthropomorphic `system('clear') 几乎可以在所有 Unix/类 Unix 系统上工作。
    • @enedil 确实如此,但是很多人不知道 OS X 是一个类 Unix 系统。
    • @anthropomorphic 因为它不是。 OS X 已通过 Open Group 的 Unix 认证。
    【解决方案3】:

    在 *nix 盒子上

    `clear`
    

    在 Windows 上

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

    在 OSX 上

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

    【讨论】:

    • 是的,这不起作用。必须做system('clear') 或Ctrl + L
    • system 'clear' 为我工作,但我得到了: command not found => false
    • 您可以为此添加一个别名,例如 clear 您的 pryrc 文件。感谢分享
    【解决方案4】:
    macOS 中的

    Command + K 效果很好。

    【讨论】:

      【解决方案5】:

      在 Ubuntu 11.10 系统上clear 将主要清除 irb 窗口。你会得到一个返回 => True 打印值。

      一大堆丑陋的文字

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

      你得到了什么:

       => true 
      ruby-1.9.2-p290 :007 > 
      

      【讨论】:

        【解决方案6】:

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

        . clear
        

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

        . cls
        

        来源:pry.github.io

        【讨论】:

        • 我刚刚在 Windows 上的 Ruby 2.0.0p481 下使用 raw irb 尝试过,但它不起作用。
        • 是的。似乎它在Windows中不起作用。但它确实适用于 mac 和 Linux。
        • 我最喜欢这个答案。你不必修改任何东西,它只是炮轰。也很简单好记。顺便说一句,. cls 应该可以在 Windows 上运行。
        • 我想知道哪个命令可以与 tmux 一起使用。我认为 Ctrl + L 是 thatway_3 下面所说的那个。
        【解决方案7】:
        system 'clear'
        

        应该也适用于 rails 4.0

        【讨论】:

          【解决方案8】:

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

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

          附:这是在 Linux 上测试的。

          【讨论】:

          • 这只是`clear`的输出,相当于puts %x(/usr/bin/clear)。
          【解决方案9】:

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

          或

          Ctrl + L 清除 IRB 屏幕。

          【讨论】:

          • 在终端应用程序中适用于 Mac OS X.11.1
          • @thatway_3 - 很好的答案:你是如何在 Stackoverflow 上打印键盘指令的?
          【解决方案10】:
          puts `clear`
          

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

          【讨论】:

            【解决方案11】:

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

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

            【讨论】:

              【解决方案12】:

              在 Windows 中,使用 Rails 4,

              system('cls')
              

              为我工作

              【讨论】:

                【解决方案13】:

                这里有很多很好的答案,但我经常从 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"'
                

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

                【讨论】:

                  【解决方案14】:

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

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

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

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

                  【讨论】:

                    【解决方案15】:

                    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
                    

                    【讨论】:

                      【解决方案16】:

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

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

                      【讨论】:

                        【解决方案17】:
                        system 'cls' 
                        

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

                        【讨论】:

                          【解决方案18】:

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

                          1.9.3-p125 :151 >   system 'reset'
                          

                          终于成功了!

                          【讨论】:

                          • 使用反引号简化它:`reset`.
                          • @the Tin Man - 反引号并不总是按照您的想法运作,但 reset 应该可以正常工作
                          • 反引号总是按我的预期工作,但是多年来,我一直在以各种语言使用它们。
                          • 确实,有时类似于反引号的东西可能确实是其他 UTF-8 生物。有时我会用上下引号来修复“文本”文档,这些引号实际上是 != ANSI/ASCII " 字符。就像在商业 SRT 文件中一样,所有的地狱都崩溃了。
                          【解决方案19】:

                          Windows 用户:

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

                          @echo off
                          cls
                          

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

                          system('c')
                          

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

                          【讨论】:

                            【解决方案20】:
                            ->(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 上解决某些奇怪问题的一种解决方法。

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

                            【讨论】:

                              【解决方案21】:

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

                              s = `cls`
                              puts s
                              

                              我想会更好。

                              【讨论】:

                              • 这失败了:你得到这个 irb(main):004:0> cls => "\f"
                              • @OrionEdwards @JesperE 第一行显示"\f" 这是你得到的,然后puts s 输出这个♀ 我想知道为什么?
                              猜你喜欢
                              • 2021-12-10
                              • 2011-02-28
                              相关资源
                              最近更新 更多