How to enable auto completion in Ruby's IRB
Asked Answered
S

3

62

When I use Merb's built in console, I get tab auto-completion similar to a standard bash prompt. I find this useful and would like to enable it in non-merb IRB sessions. How do I get auto-completion in IRB?

Spleenful answered 5/9, 2009 at 0:30 Comment(0)
A
76

Just drop require 'irb/completion' in your irbrc.

If that doesn't work try bond, http://tagaholic.me/bond/:

   require 'bond'; require 'bond/completion'

Bond not only improves irb's completion, http://tagaholic.me/2009/07/22/better-irb-completion-with-bond.html, but also offers an easy dsl for making custom autocompletions.

Ausgleich answered 5/9, 2009 at 5:14 Comment(3)
Works great! Minor history bug in Git Bash, but I'm sure it will be fixed.Gogetter
Just wanted to add, if you are on Ubuntu, you can create the file .irbrc in your $HOME directory if it doesn't already exist.Mckinnie
Doesnt work on OSX 10.11.5 with irb version 0.9.6(09/06/30)Peavey
S
22

This is just repeating the information on Cody Caughlan's comment above so it is easier to find:

either require 'irb/completion' or add the following to ~/.irbrc

IRB.conf[:AUTO_INDENT] = true
IRB.conf[:USE_READLINE] = true
IRB.conf[:LOAD_MODULES] = [] unless IRB.conf.key?(:LOAD_MODULES)
unless IRB.conf[:LOAD_MODULES].include?('irb/completion')
  IRB.conf[:LOAD_MODULES] << 'irb/completion'
end 
Spleenful answered 5/9, 2009 at 1:58 Comment(4)
"the page above" is a little confusing, as the order of answers can be changed. You may wish to refer to answers by the author of those answers.Veiled
Why should I add this block to the ibrc if a simple require statement does the same?Rotow
@Rotow so you don't have to type require 'irb/completion' everytime you use or open irb =)Drewdrewett
@M03, I parsed the sentence 'either require irb/completion or add the following to ~/.irbrc' as "either add require irb/completion to ~/.irbrc or add the following to ~/.irbrc'. I haven't used irb for years, but I still have a ~/.irbrc which indeed starts with require 'irb/completion' and doesn't include any LOAD_MODULES stuff. And with that a history file is loaded and written fine.Rotow
P
10

This is what worked for me on Mac OS 10.11.5. using rvm. Do the following :

  1. sudo gem install bond
  2. Create the file .irbrc in your home directory. vi ~/.irbrc
  3. Add the following lines in the .irbrc file require 'bond' Bond.start

  4. Save and close the file

  5. Open irb and use tab key to autocomplete
Peavey answered 20/7, 2016 at 12:24 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.