2011-05-20 5 views
8

Wnen vous utilisez RIR avec le mode de retrait automatique, les end instructions étaient en retrait d'un niveau supplémentaireindentation automatique Défaire

def foo 
    ... 
    end 

au lieu de montrer la convention indenter ordinaire:

def foo 
    ... 
end 

parce que vous ne pouvez pas dire irb à l'avance que vous allez échapper à un niveau dans la ligne suivante. Cette question a été abordée ailleurs comme here ou here, mais aucune ne donne une réponse satisfaisante. Ils suggèrent simplement d'abandonner. Cependant, si nous pouvons écraser au minimum certaines méthodes IRB de sorte que le retrait automatique insère des espaces blancs non dans la zone d'invite, mais au début de la ligne que vous tapez, alors par défaut, irb insérera toujours des espaces, mais nous serons en mesure d'effacer certains espaces avec retour arrière. Est-ce possible? Ou, si ce n'est pas réaliste, alors est-il possible de faire irb effacer la dernière ligne de l'écran et l'afficher à nouveau avec l'indentation juste après que vous appuyez sur Entrée sur une ligne comprenant end?

Répondre

5

La réécriture de la dernière ligne est possible. Le faire en IRB est difficile en raison de son manque de documentation et d'API cohérente à travers les versions. Une alternative irb, ripl, a déjà résolu ce problème pour lui-même avec un auto-indent plugin. Si vous voulez essayer ripl et son auto-indentation:

$ gem install ripl-auto_indent 
$ echo "require 'ripl/auto_indent'" >> ~/.riplrc 

# Auto-indent away 
$ ripl 
>> def foo 
>> puts "it's auto-magic!" 
>> end 
+0

C'est cool. Je vais l'utiliser. Merci. – sawa

+0

J'aime ripl et commencé à l'utiliser. Maintenant, j'essaie de personnaliser les caractères d'invite, mais je ne trouve pas les instructions sur le web. Le style irb utilisant 'IRB.conf [: DEFAULT] ...' ne semble pas fonctionner. Pouvez-vous me diriger vers un lien pour l'instruction ou expliquer brièvement comment le faire? – sawa