IRB コンソールをクリアするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/116593

  •  02-07-2019
  •  | 
  •  

質問

IRB コンソール画面をクリアするにはどうすればよいですか?

役に立ちましたか?

解決

の上 Mac OS X または Linux 使用できます Ctrl + L をクリアするために 治験審査委員会 画面。

他のヒント

これを中に放り込んで %userprofile%\.irbrc そしてあなたは元気です

def cls
  system('cls')
end

から Windows の IRB クリア画面.

*ニックスボックスについて

`clear`

Windowsの場合

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

OSX上

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

Ubuntu 11.10 システムの場合 clear ほとんどの場合、irb ウィンドウがクリアされます。リターンが得られます => True 値が印刷されます。

醜いテキストの大きな混乱

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

得られるもの:

 => true 
ruby-1.9.2-p290 :007 > 

指示 + KマックOS よく働く。

今日、こんなことを発見しました。Pry (IRB の代替) では、 . コマンドシェルに転送されます。つまり、Mac と Linux では次のように使用できます。

. clear

アップデート:残念ながら、Windows では動作しないようです。

ソース: Pryrepl.org

画面をクリアするには、次のようにします。

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

追伸これは Linux でテストされました。

system 'clear'

Rails 4.0 でも動作するはずです

puts `clear`

画面をクリアして戻ります => nil Mac OSX 10.6 ターミナルおよび iTerm2 でテスト済み。

Linux Mint 17でも使用できます Ctrl + シフト + L

または

Ctrl + LIRB 画面をクリアします。

WindowsではRails 4を使用し、

system('cls')

私のために働きました

次のメソッドを追加します ~/.irbrc:

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

Cntrl-L または Cntrl-K 通常のコンソールでは動作しますが、tmux を使用しているため、tmux ウィンドウ内の画面が混乱してしまいます。

conf.return_format = "" は戻り値から nil を取り除きます。

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

実行可能ファイルにはこれを使用しました。

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

clear

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

または IRB で使用できます system('clear')

system 'cls' 

WindowsではRuby 2.2.0とrails 4.0で動作します。

ここには良い答えがたくさんありますが、私は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"'

実際にそれをキーストロークにマッピングする方法を誰かが見つけたら、ぜひ教えてほしいです。Mintty で動作する OSX 上の cmd-k に似たものが欲しいと思っています。

irb で tty をリセットする方法を探してここに来ました。改行を印刷したり、入力した内容を何らかの形で表示したりせず、一部の出力のみを表示したためです。

1.9.3-p125 :151 >   system 'reset'

ついに私のためにトリックをやってくれました!

Windows ユーザーの場合:

内容が次のような c.bat という名前のバット ファイルを作成するとします。

@echo off
cls

その後、IRB で次のように言えます。

system('c')

コンソールをクリアします。とても素敵だと思ったのでシェアしたいと思いました。基本的に、パス内にあるものはすべてアクセス可能です。

->(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? 結果を印刷するかどうかを確認します。メソッドを保存し、定義を復元するメソッドで再定義しましたが、irb が結果をエコーし​​ないように false を返します。

次に、ANSI 制御文字をいくつか出力しました。 \e[2J 画面を掃除しますし、 \e[H カーソルを画面の左上の位置に移動します。 \e[D これは、Windows での奇妙な問題の回避策ですが、スペースを出力してカーソルを戻します。

最後に、これはまったく実用的ではありません。ただ笑って ;)

バックティック演算子はコマンドの出力をキャプチャして返します。

s = `cls`
puts s

もっとうまくいくと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top