質問
IRB コンソール画面をクリアするにはどうすればよいですか?
解決
の上 Mac OS X または Linux 使用できます Ctrl + L をクリアするために 治験審査委員会 画面。
他のヒント
*ニックスボックスについて
`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
もっとうまくいくと思います。