Comment effacer la console IRB?

188

Comment effacez-vous l'écran de la console IRB?

John Topley
la source

Réponses:

267

Sur Mac OS X ou Linux, vous pouvez utiliser Ctrl+ Lpour effacer l' écran IRB .

John Topley
la source
9
Ctrl+Lfonctionne également dans gnome-terminal, mais quelque chose de plus programmatique estsystem 'clear'
vol7ron
Avec zsh ctrl + L ne fonctionne pas, ctrl + K fonctionne. (Oh My ZSH pour être précis)
SidOfc
@SidneyLiebrand J'ai testé sur Oh My ZSH et seul Ctrl + L a fonctionné
pluralisme
2
@fanaugen Sur MacOS, effacera cmd+ktout dans un robinet terminal, si vous utilisez tmux pour diviser la zone de la zone visuelle, ctrl+Lfera un meilleur travail.
Fan Yer
60

Jette ça à l'intérieur %userprofile%\.irbrcet tu es bon

def cls
  system('cls')
end

De l' écran clair IRB sur Windows .

Ben Hoffstein
la source
13
Je dois préciser que cela s'applique uniquement à Windows.
Ben Hoffstein le
8
system('clear')fonctionnera également sur un Mac. Il est à noter que cela partira => trueen haut de la console.
Michael Dorst
1
@anthropomorphic `system ('clear') fonctionnera sur presque tous les systèmes de type Unix / Unix.
enedil le
@enedil C'est absolument vrai, mais beaucoup de gens ne savent pas qu'OS X est un système de type Unix.
Michael Dorst
@anthropomorphique parce que ce n'est pas le cas . OS X est certifié Unix par Open Group.
enedil
42

Sur les boîtes * nix

`clear`

sous Windows

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

sur OSX

system 'clear' # works
`clear` # does not work
AShelly
la source
3
ouais ça ne marche pas. Avoir à faire system('clear')ou Ctrl+L
Connor Leech
system 'clear'a travaillé pour moi mais j'ai eu: command not found => false
echo
1
Vous pouvez ajouter un alias tel que clearvotre fichier pryrc pour cela. Merci pour le partage
James Klein
22

Command+ Kdans macOS fonctionne très bien.

user1323136
la source
16

Sur Ubuntu 11.10, le système effacera clearprincipalement la fenêtre irb. Vous obtenez une => Truevaleur de retour imprimée.

Un gros désordre de texte laid

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

ce que tu as:

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

Je viens de découvrir ceci aujourd'hui: Dans Pry (une alternative IRB), une ligne d'entrée qui commence par un .sera transmise au shell de commande. Ce qui signifie que sous mac et Linux, nous pouvons utiliser:

. clear

Mise à jour: Malheureusement, cela ne semble pas fonctionner sous Windows.

Source: Pryrepl.org

Pantalon Chandresh
la source
Je viens d'essayer cela en utilisant l'irb brut sous Ruby 2.0.0p481 sur Windows et cela ne fonctionne pas.
John Topley
Oui. Il semble que cela ne fonctionne pas sous Windows. Mais cela fonctionne sûrement sous Mac et Linux.
Chandresh Pant
J'aime le mieux cette réponse. Vous n'avez rien à modifier et c'est juste des bombardements. Simple à retenir aussi. Btw, . clsdevrait fonctionner sur Windows.
Eric Boehs
Je me demande quelle commande fonctionnerait avec tmux. Je pense que Ctrl + L est celui que dit thatway_3 ci-dessous.
Pablo le
9

Pour effacer l'écran, faites simplement:

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

PS Ceci a été testé sur Linux.

Sujit Kumar
la source
Ceci est juste la sortie de `clear`, et équivaut à puts %x(/usr/bin/clear).
Todd A. Jacobs
9
system 'clear'

Devrait également fonctionner pour les rails 4.0

Arvind Singh
la source
8

Sur Linux Mint 17, vous pouvez également utiliser Ctrl+ Shift+L

ou

Ctrl+ L pour effacer l'écran IRB.

thatway_3
la source
A travaillé pour Mac OS X.11.1 dans l'application Terminal
Patrick
@ thatway_3 - belle réponse: comment avez-vous imprimé les instructions clavier sur Stackoverflow?
BKSpurgeon
6
puts `clear`

Efface l'écran, puis renvoie => nilTesté sur le terminal Mac OSX 10.6 et iTerm2.

Lucas Rockett Gutterman
la source
6

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

Ou dans IRB, vous pouvez utiliser system('clear')

Stephen Ross
la source
5

Sous Windows, en utilisant Rails 4,

system('cls')

travaillé pour moi

Argile H
la source
3

Ajoutez la méthode suivante à ~/.irbrc:

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

Cntrl-Lou Cntrl-K travailler dans une console normale mais j'utilise tmux et ceux-ci gâchent l'écran dans la fenêtre tmux.

Le conf.return_format = "" supprime la valeur nulle de la valeur de retour.

TheFed
la source
3

Les utilisateurs de Windows essaient simplement,

system 'cls'

OU

system('cls')

Cela ressemble à ceci dans la fenêtre IRB,

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

A fait l'affaire pour moi dans ruby ​​1.9.3. Cependant, les commandes suivantes n'ont pas fonctionné et sont retournées => nil,

system('clear')
system 'clear'
system `cls`       #using the backquotes below ESC Key in windows
Chanceux
la source
3

J'ai utilisé ceci pour les fichiers exécutables:

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

clear
avinashbot
la source
2
system 'cls' 

Fonctionne pour moi sous Windows, avec Ruby 2.2.0 et rails 4.0

saadibabar
la source
Voulez-vous dire Rails 4?
Annuler
2

Des tonnes de bonnes réponses ici, mais je me connecte souvent à distance dans une boîte Linux avec Mintty à partir de Windows. Félicitations à ce qui précède à propos de l'utilisation de .irbrc, mais j'ai trouvé ceci:

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

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

Cela vous donne les options pour le comportement * nix 'clear' et le comportement Windows 'cls', ce que je trouve souvent plus utile si je veux vraiment détruire le tampon plutôt que de simplement le faire défiler hors de vue.

PS une variante similaire fonctionne également dans .bashrc:

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

Si quelqu'un pouvait trouver un moyen de mapper cela sur une touche, j'aimerais l'entendre. J'aimerais vraiment avoir quelque chose qui ressemble à cmd-k sur osx qui fonctionnerait dans Mintty.

erich2k8
la source
1

Je suis venu ici à la recherche d'un moyen de réinitialiser le tty avec irb, car il n'imprimait pas de nouvelles lignes ou ne montrait pas ce que j'avais tapé d'une manière ou d'une autre, seulement une sortie.

1.9.3-p125 :151 >   system 'reset'

a finalement fait l'affaire pour moi!

Marcos
la source
simplifier l' utilisation des tiques dos: `reset`.
The Tin Man
@the Tin Man - les backticks ne fonctionnent pas toujours comme vous le pensez, mais resetdevraient bien fonctionner
vol7ron
Les backticks fonctionnent toujours comme j'attends, mais ensuite, je les utilise dans différentes langues depuis des années et des années.
the Tin Man
En effet, parfois, ce qui ressemble à un backtick peut effectivement être une autre créature UTF-8. De temps en temps, je corrige des documents "texte" avec des guillemets supérieurs et inférieurs qui sont en fait! = Le caractère ANSI / ASCII ". Comme dans les fichiers SRT commerciaux, où tout l'enfer se déchaîne.
Marcos
0

Pour les utilisateurs de Windows:

Si vous créez un nom de fichier chauve-souris c.bat dont le contenu est:

@echo off
cls

Ensuite, dans IRB, vous pouvez dire:

system('c')

pour effacer la console. Je pensais juste que je partagerais parce que je pensais que c'était plutôt cool. Essentiellement, tout ce qui se trouve sur le chemin est accessible.

sujet aux accidents
la source
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]

Cela effacera complètement votre écran IRB, sans lignes vides supplémentaires et trucs «=> nil». Testé sous Linux / Windows.

Ce one-liner pourrait être étendu comme:

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

Cela utilise de nombreuses astuces.

Premièrement, irb appellera echo?pour vérifier si le résultat doit être imprimé. J'ai sauvegardé la méthode, puis redéfinie avec une méthode qui restaure la définition mais retourne false pour que irb ne fasse pas écho au résultat.

Deuxièmement, j'ai imprimé quelques caractères de contrôle ANSI. \e[2Jnettoiera l'écran et \e[Hdéplacera le curseur vers la position supérieure gauche de l'écran. \e[Dva imprimer un espace, puis reculer le curseur alors qu'il s'agit d'une solution de contournement pour quelque chose d'étrange sous Windows.

Enfin, ce n'est pas du tout pratique. Souriez simplement ;)

orzFly
la source
-3

L'opérateur backtick capture la sortie de la commande et la renvoie

s = `cls`
puts s

fonctionnerait mieux, je suppose.

JesperE
la source
1
Cela échoue: vous obtenez cet irb (main): 004: 0> cls=> "\ f"
Orion Edwards
@OrionEdwards @JesperE la première ligne m'a montré "\f"quel est ce que vous avez obtenu, puis le puts sproduit Je me demande pourquoi?
chanceux