2017-05-02 3 views

答えて

1
def clear_screen 
    puts "Going to clear the screen" 
    if RUBY_PLATFORM =~ /win32|win64|\.NET|windows|cygwin|mingw32/i 
    system('cls') 
    else 
    system('clear') 
    end 
end 
0

それはクリアしていることを念頭に置いて価値がある:それはこのことだろうLinux上でMacのに対し

system('cls') 

プログラム内の画面があなたの望む動作かもしれませんが、よりUNIX風の環境に慣れた人にとっては怒らない限り、刺激的なものかもしれません。スクロールバック履歴を消すことは本当に失礼です。

RubyとPOSIXのこれ以上の処理方法は、スクリーンを使用して端末スタイルの対話型アプリケーションを構築するのに最適な、クロスプラットフォームのライブラリであるCursesDocumentation)です。 。あなたはこのようなもので終わる

#!/usr/bin/env ruby 

require 'rubygems' 
gem 'curses' 
require 'curses' 

Curses.init_screen 

begin 
    Curses.crmode 

    # Do your calculations here, and to print: 
    Curses.addstr("(program output)\n") 

    Curses.addstr("Press any key to continue...") 

    Curses.refresh 

    Curses.getch 

ensure 
    Curses.close_screen 
end 

呪いは「クリアスクリーン」ツールよりも多くあり、あなたは、スクロールで物事のすべての種類を複数のウィンドウを追加したり、終了したときプログラムは、close_screenが呼び出されたときに、以前とまったく同じ状態に端末を復元します。そのため、プログラムがクラッシュした場合には、問題が発生するのを避けるため、ブロックはensureにあります。

+0

どのシステムでスクロールバック履歴を消去するのですか? –

+0

端末の設定によって異なります。いくつかの点では、ページ全体に空白行が必要です。いずれにしても、「クリア」と呼ぶことはただの失礼です。私の画面をクリアしたい場合は、 'CTRL + L 'のようにクリアするショートカットを押します。 – tadman

関連する問題