Question
Comment effacez-vous l'écran de la console IRB?
La solution
Sous Mac OS X ou Linux , vous pouvez utiliser Ctrl + L pour effacer la IRB. écran.
Autres conseils
Jetez ceci dans % userprofile% \. irbrc
et vous êtes bon
def cls
system('cls')
end
Sur les boîtes * nix
`clear`
sous 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 la plupart du temps la fenêtre irb. Vous obtenez un retour = > Vrai
valeur imprimée.
Un gros bazar de texte laide
ruby-1.9.2-p290 :007 > system 'clear'
ce que vous obtenez:
=> true
ruby-1.9.2-p290 :007 >
La commande + K dans macOS fonctionne très bien.
Je viens de découvrir ceci aujourd'hui: dans Pry (une alternative IRB), une ligne d'entrée commençant par .
sera transmise au shell de commande. Ce qui signifie dans mac & amp; Linux, nous pouvons utiliser:
. clear
Mise à jour: Malheureusement, cela ne semble pas fonctionner sous Windows.
Source: Pryrepl.org
Pour effacer l'écran, il suffit de:
puts "\e[H\e[2J"
P.S. Ceci a été testé sur Linux.
system 'clear'
Devrait également fonctionner pour les rails 4.0
puts `clear`
Efface l'écran, puis renvoie = > nil
Testé sur les terminaux Mac OSX 10.6 et iTerm2.
Sous Linux Mint 17, vous pouvez également utiliser Ctrl + Maj + L
ou
Ctrl + L pour effacer l'écran IRB.
Dans Windows, à l'aide de Rails 4,
system('cls')
a travaillé pour moi
Ajoutez la méthode suivante à ~ / .irbrc
:
def clear
conf.return_format = ""
system('clear')
end
Cntrl-L
ou Cntrl-K
fonctionne dans la console standard, mais j'utilise tmux et ceux-ci masquent l'écran dans la fenêtre de tmux.
Le conf.return_format = "" enlève le zéro de la valeur de retour.
Les utilisateurs de Windows essaient simplement,
system 'cls'
OU
system('cls')
Cela ressemble à la fenêtre IRB,
irb(main):333:0> system 'cls'
irb(main):007:0> system('cls')
Fait le tour pour moi en ruby ??1.9.3. Cependant, les commandes suivantes ne fonctionnaient pas et renvoyaient = > néant
,
system('clear')
system 'clear'
system `cls` #using the backquotes below ESC Key in windows
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
si RUBY_PLATFORM = ~ /win32|win64|\.NET|windows|cygwin|mingw32/i
système ('cls')
autre
système ('clear')
fin
fin
Ou dans IRB, vous pouvez utiliser le système ('clear')
system 'cls'
Fonctionne pour moi sous Windows, avec Ruby 2.2.0 et rails 4.0
Des tonnes de bonnes réponses ici, mais je passe souvent dans une boîte Linux avec Mintty de Windows. Félicitations à ce qui précède sur l’utilisation de .irbrc, mais a proposé ceci:
def cls
puts "\ec\e[3J"
end
def clear
puts "\e[H\e[2Js"
end
Cela vous donne les options à la fois pour le comportement 'clear' et le comportement 'cls' de Windows, ce que je trouve souvent plus utile si je veux vraiment supprimer le tampon plutôt que de simplement le faire défiler hors de la vue.
P.S. 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 frappe, j'adorerais l'entendre. J'aimerais vraiment avoir quelque chose qui ressemble à cmd-k sur osx et qui fonctionnerait dans Mintty.
Je suis venu ici pour chercher un moyen de réinitialiser le terminal avec irb, car ce n'était pas l'impression de nouvelles lignes ou l'affichage de ce que j'avais tapé, mais seulement une sortie.
1.9.3-p125 :151 > system 'reset'
a finalement fait le tour pour moi!
Pour les utilisateurs de 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 partager, parce que je trouvais ça plutôt 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]
Ceci effacera complètement votre écran IRB, sans lignes vides supplémentaires et & # 8220; = > néant & # 8221; des trucs. Testé sous Linux / Windows.
Ce one-liner pourrait être développé comme suit:
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 d’astuces.
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 définition mais retourne false afin que irb ne répercute pas le résultat
Deuxièmement, j'ai imprimé des caractères de contrôle ANSI. \ e [2J
nettoie l’écran et \ e [H
déplace le curseur en haut à gauche de l’écran. \ e [D
imprimera un espace puis reculera le curseur alors qu'il s'agit d'une solution de contournement pour quelque chose d'étrange sous Windows.
Enfin, cela n’est pas du tout pratique. Il suffit de sourire;)
L'opérateur de backtick capture le résultat de la commande et le renvoie
s = `cls`
puts s
fonctionnerait mieux, je suppose.