Comment effacez-vous la console IRB?
21 réponses
Sur Mac OS X ou Linux vous pouvez utiliser Ctrl + L pour effacer le CISR écran.
Jetez ceci à l'intérieur %userprofile%\.irbrc
et vous êtes bon
def cls
system('cls')
end
À partir de IRB effacer l'écran sur windows .
Sur * boîtes nix
`clear`
Sur Windows
system 'cls' # works
`cls` # does not work
Sur OSX
system 'clear' # works
`clear` # does not work
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 >
Pour effacer l'écran:
puts "\e[H\e[2J"
P.S. ceci a été testé sur Linux.
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
puts `clear`
Efface l'écran, puis renvoie => nil
testé sur Mac OSX 10.6 Terminal et iTerm2.
system 'clear'
Devrait également fonctionner pour rails 4.0
Sur Linux Mint 17 aussi, vous pouvez utiliser Ctrl + Maj + L
Ou
Ctrl + L pour effacer la CISR écran.
Dans windows, en utilisant Rails 4,
system('cls')
Travaillé pour moi
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
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.
Je l'ai utilisé pour les fichiers exécutables:
def clear
system("cls") || system("clear") || puts("\e[H\e[2J")
end
clear
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')
system 'cls'
Fonctionne pour moi dans Windows, avec Ruby 2.2.0 et rails 4.0
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.
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!
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.
->(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 ;)
L'opérateur backtick capture la sortie de la commande et la renvoie
s = `cls`
puts s
Fonctionnerait mieux, je suppose.