Como você limpa o console do IRB?

186

Como você limpa a tela do console do IRB?

John Topley
fonte

Respostas:

267

No Mac OS X ou Linux, você pode usar Ctrl+ Lpara limpar a tela do IRB .

John Topley
fonte
8
Ctrl+Ltambém trabalha no gnome-terminal, mas algo mais programático ésystem 'clear'
vol7ron
Com zsh ctrl + L não funciona, ctrl + K funciona. (Oh My ZSH para ser específico)
SidOfc
@SidneyLiebrand eu testei no Oh My ZSH e apenas Ctrl + L funcionou
pluralismo
2
@fanaugen No MacOS, cmd+klimpará tudo dentro de um terminal, se você usar o tmux para dividir a área da área visual, ctrl+Lfará um trabalho melhor.
Fan Yer
59

Jogue isso dentro %userprofile%\.irbrce você é bom

def cls
  system('cls')
end

Na tela clara do IRB no Windows .

Ben Hoffstein
fonte
13
Devo esclarecer que isso se aplica apenas ao Windows.
Ben Hoffstein
8
system('clear')também funcionará em um Mac. Deve-se notar que isso ficará => trueno topo do console.
Michael Dorst
1
@anthropomorphic `system ('clear') funcionará em quase todos os sistemas Unix / Unix.
28414 enedil
@enedil Isso é absolutamente verdade, porém muitas pessoas não sabem que o OS X é um sistema semelhante ao Unix.
Michael Dorst
@anthropomorphic porque é não . O OS X é certificado Unix pelo Open Group.
30714 enedil
41

Em * nix boxes

`clear`

no Windows

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

no OSX

system 'clear' # works
`clear` # does not work
AShelly
fonte
3
Sim, isso não funciona. Tem que fazer system('clear')ou Ctrl+L
Connor Leech
system 'clear'funcionou para mim, mas eu consegui: command not found => false
echo
1
Você pode adicionar um alias como clearseu arquivo pryrc para isso. Obrigado por compartilhar
James Klein
21

Command+ Kno macOS funciona muito bem.

user1323136
fonte
16

No Ubuntu 11.10, o sistema clearlimpará principalmente a janela irb. Você obtém um => Truevalor de retorno impresso.

Uma grande bagunça de texto feio

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

o que você ganha:

 => true 
ruby-1.9.2-p290 :007 > 
TW Scannell
fonte
10

Acabei de descobrir isso hoje: No Pry (uma alternativa ao IRB), uma linha de entrada que começa com a .será encaminhada para o shell de comando. O que significa que no mac e Linux, podemos usar:

. clear

Atualização: Infelizmente, parece não funcionar no Windows.

Fonte: Pryrepl.org

Calça Chandresh
fonte
Eu apenas tentei isso usando irb bruto no Ruby 2.0.0p481 no Windows e não funciona.
John Topley
Sim. Parece que não funciona no Windows. Mas certamente funciona em mac e Linux.
Chandresh Pant
Eu gosto desta resposta da melhor maneira. Você não precisa modificar nada, e isso é apenas uma explosão. Simples de lembrar também. Btw, . clsdeve funcionar no Windows.
Eric Boehs
Gostaria de saber qual comando funcionaria com o tmux. Eu acho que Ctrl + L é o que thatway_3 diz abaixo.
Pablo
9

Para limpar a tela, basta:

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

PS Isso foi testado no Linux.

Sujit Kumar
fonte
Esta é apenas a saída de `clear`e é equivalente a puts %x(/usr/bin/clear).
Todd A. Jacobs
9
system 'clear'

Deve funcionar para os trilhos 4.0 também

Arvind singh
fonte
8

No Linux Mint 17 também é possível usar Ctrl+ Shift+L

ou

Ctrl+ L para limpar a tela do IRB.

thatway_3
fonte
Trabalhou para Mac OS X.11.1 no aplicativo Terminal
Patrick
@ thatway_3 - resposta legal: como você imprimiu as instruções do teclado no Stackoverflow?
precisa saber é o seguinte
6
puts `clear`

Limpa a tela e retorna => nilTested no Mac OSX 10.6 Terminal e no iTerm2.

Lucas Rockett Gutterman
fonte
6

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

Ou no IRB você pode usar system('clear')

Stephen Ross
fonte
5

No Windows, usando o Rails 4,

system('cls')

trabalhou para mim

Argila H
fonte
3

Adicione o seguinte método a ~/.irbrc:

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

Cntrl-Lou Cntrl-K trabalho no console normal, mas estou usando o tmux e esses bagunçam a tela dentro da janela do tmux.

O conf.return_format = "" retira o valor de retorno nulo.

A policia Federal
fonte
3

Os usuários do Windows simplesmente tentam,

system 'cls'

OU

system('cls')

Parece com isso na janela do IRB,

irb(main):333:0> system 'cls'
irb(main):007:0> system('cls')

Fiz o truque para mim no ruby ​​1.9.3. No entanto, os seguintes comandos não funcionaram e retornaram => nil,

system('clear')
system 'clear'
system `cls`       #using the backquotes below ESC Key in windows
Por sorte
fonte
3

Eu usei isso para arquivos executáveis:

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

clear
avinashbot
fonte
2
system 'cls' 

Funciona para mim no Windows, com Ruby 2.2.0 e rails 4.0

saadibabar
fonte
Você quer dizer Rails 4?
Anular
1

Eu vim aqui procurando uma maneira de redefinir o tty com o irb, pois ele não estava imprimindo novas linhas ou mostrando o que eu digitei de alguma forma, apenas alguma saída.

1.9.3-p125 :151 >   system 'reset'

finalmente fiz o truque para mim!

Marcos
fonte
simplificá-la utilizando os carrapatos de volta: `reset`.
the Tin Man
@o Tin Man - acentos graves nem sempre funcionam como você pensa, mas resetdeve funcionar bem
vol7ron
Os backticks sempre funcionam como eu espero, mas, então, eu os uso em vários idiomas há anos e anos.
o Homem de Lata
De fato, às vezes o que se parece com um bastão pode de fato ser alguma outra criatura UTF-8. Ocasionalmente, eu corrigo documentos "text" com aspas superiores e inferiores que são realmente! = O caractere ANSI / ASCII ". Como nos arquivos SRT comerciais, onde todo o inferno se abre."
Marcos
1

Toneladas de boas respostas aqui, mas eu costumo remotamente em uma caixa Linux com Mintty do Windows. Parabéns ao exposto sobre o uso do .irbrc, mas veio com isso:

def cls
  puts "\ec\e[3J"
end

def clear
  puts "\e[H\e[2Js"
end

Isso fornece as opções para o comportamento * nix 'clear' e o comportamento do 'cls' do Windows, que muitas vezes acho mais útil se eu realmente quiser reduzir o buffer do que apenas rolá-lo para fora da vista.

PS uma variante semelhante também funciona em .bashrc:

alias cls='echo -e "\ec\e[3J"'

Se alguém pudesse encontrar uma maneira de mapear isso com um toque de tecla, eu adoraria ouvir. Eu realmente gostaria de ter algo parecido com o cmd-k no osx que funcionasse em Mintty.

erich2k8
fonte
0

Para usuários do Windows:

Se você criar um nome de arquivo bat c.bat cujo conteúdo seja:

@echo off
cls

Então, no IRB, você pode dizer:

system('c')

para limpar o console. Eu apenas pensei em compartilhar porque achei muito legal. Essencialmente, qualquer coisa no caminho é acessível.

propenso a acidentes
fonte
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]

Isso limpará completamente a tela do IRB, sem linhas vazias extras e itens “=> nil”. Testado em Linux / Windows.

Esse one-liner pode ser expandido como:

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

Isso usa muitos truques.

Em primeiro lugar, o irb ligará echo?para verificar se o resultado deve ser impresso. Salvei o método e redefini-o com um método que restaura a definição, mas retorna false, para que o irb não ecoe o resultado.

Em segundo lugar, imprimi alguns caracteres de controle ANSI. \e[2Jlimpará a tela e \e[Hmoverá o cursor para a posição superior esquerda da tela. \e[Dimprimirá um espaço e, em seguida, retrocederá o cursor, enquanto essa é uma solução alternativa para algo estranho no Windows.

Finalmente, isso não é prático. Apenas sorria ;)

orzFly
fonte
-3

O operador backtick captura a saída do comando e retorna

s = `cls`
puts s

funcionaria melhor, eu acho.

JesperE
fonte
1
Isso falha: Você obtém este irb (principal): 004: 0> cls=> "\ f"
Orion Edwards
@OrionEdwards @JesperE a primeira linha me mostrou "\f"qual é o que você conseguiu e, em seguida, mostra puts sisso , pergunto-me por quê?
Sorte