Comment effacer la console IRB?


188

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

Réponses:


267

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


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 .


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

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


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 > 

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


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.


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


8

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

ou

Ctrl+ L pour effacer l'écran IRB.


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

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')


5

Sous Windows, en utilisant Rails 4,

system('cls')

travaillé pour moi


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.


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

3

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

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

clear

2
system 'cls' 

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


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.


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!


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.


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 ;)


-3

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

s = `cls`
puts s

fonctionnerait mieux, je suppose.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.