Comment effacez-vous la console IRB?

Comment effacer L'écran de la console IRB?

171
demandé sur John Topley 2008-09-22 22:24:20

21 réponses

Sur Mac OS X ou Linux vous pouvez utiliser Ctrl + L pour effacer le CISR écran.

252
répondu John Topley 2013-03-25 14:07:43

Jetez ceci à l'intérieur %userprofile%\.irbrc et vous êtes bon

def cls
  system('cls')
end

À partir de IRB effacer l'écran sur windows .

59
répondu Ben Hoffstein 2014-07-18 16:16:31

Sur * boîtes nix

`clear`

Sur Windows

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

Sur OSX

system 'clear' # works
`clear` # does not work
36
répondu AShelly 2015-07-20 21:45:50

Sur le système Ubuntu 11.10 clear effacera principalement la fenêtre irb. Vous obtenez une valeur de retour => True imprimée.

Un gros gâchis de texte laid

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

Ce que vous obtenez:

 => true 
ruby-1.9.2-p290 :007 > 
16
répondu TW Scannell 2011-12-06 15:57:00

Commande + K dans macOS fonctionne très bien.

12
répondu user1323136 2018-02-28 12:21:32

Pour effacer l'écran:

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

P.S. ceci a été testé sur Linux.

8
répondu Sujit Kumar 2013-06-06 16:20:00

Vient 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 dans mac & Linux, nous pouvons utiliser:

. clear

Mise à jour: malheureusement, il ne semble pas fonctionner sur Windows.

Source: Pryrepl.org

8
répondu RubyDev 2016-07-28 10:02:45
puts `clear`

Efface l'écran, puis renvoie => nil testé sur Mac OSX 10.6 Terminal et iTerm2.

6
répondu Lucas Rockett Gutterman 2012-04-24 03:06:06
system 'clear'

Devrait également fonctionner pour rails 4.0

6
répondu Arvind singh 2015-10-20 09:54:24

Sur Linux Mint 17 aussi, vous pouvez utiliser Ctrl + Maj + L

Ou

Ctrl + L pour effacer la CISR écran.

5
répondu thatway_3 2015-09-21 13:01:17

Dans windows, en utilisant Rails 4,

system('cls')

Travaillé pour moi

4
répondu Clay H 2014-01-16 15:18:32

Les utilisateurs de Windows essaient simplement,

system 'cls'

Ou

system('cls')

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 ont renvoyé => nil,

system('clear')
system 'clear'
system `cls`       #using the backquotes below ESC Key in windows
3
répondu Lucky 2014-09-29 12:22:10

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

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

Cntrl-L ou Cntrl-K fonctionne dans la console régulière mais j'utilise tmux et ceux-ci gâchent l'écran à l'intérieur de la fenêtre tmux.

Le conf.return_format = "" enlève le nil de la valeur de retour.

2
répondu TheFed 2014-07-18 16:20:42

Je l'ai utilisé pour les fichiers exécutables:

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

clear
2
répondu avinashbot 2014-11-20 17:30:22

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

2
répondu Stephen Ross 2016-09-08 15:08:40
system 'cls' 

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

1
répondu saadibabar 2015-10-09 11:48:12

Tonnes de bonnes réponses ici, mais je souvent à distance dans une boîte linux avec Mintty de windows. Bravo à ce qui précède sur l'utilisation .irbrc, mais est venu avec ceci:

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

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

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

PS une variante similaire fonctionne également .bashrc:

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

Si quelqu'un pouvait trouver un moyen de cartographier réellement qu'à une séquence de touches, je serais ravi de l'entendre. Je voudrais vraiment avoir quelque chose qui s'apparente à cmd-k sur osx qui fonctionnerait dans Mintty.

1
répondu erich2k8 2016-08-21 01:26:39

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'ai tapé d'une manière ou d'une autre, seulement une sortie.

1.9.3-p125 :151 >   system 'reset'

Enfin fait l'affaire pour moi!

0
répondu Marcos 2012-10-17 21:07:46

Pour les utilisateurs windows:

Si vous créez un nom de fichier bat 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 assez cool. Essentiellement, tout ce qui se trouve dans le chemin est accessible.

0
répondu accident-prone 2013-06-06 16:19:14
->(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" = > nil". Testé sur Linux/Windows.

Ce one-liner pourrait être élargi 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 beaucoup de trucs.

Tout d'abord, irb appellera echo? pour vérifier si le résultat doit être imprimé. J'ai enregistré la méthode, puis redéfini avec une méthode qui restaure la defination mais renvoie false afin que irb ne fasse pas écho au résultat.

Deuxièmement, j'ai imprimé quelques caractères de contrôle ANSI. \e[2J volonté nettoyez l'écran et \e[H déplacera le curseur vers la position supérieure gauche de l'écran. \e[D va imprimer un espace, puis reculer le curseur alors que c'est une solution de contournement pour quelque chose d'étrange sur Windows.

Enfin c'est pas pratique du tout. Juste sourire ;)

0
répondu orzFly 2013-10-29 13:06:20

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

s = `cls`
puts s

Fonctionnerait mieux, je suppose.

-3
répondu JesperE 2008-09-22 19:04:47