word boundaries in irb

721 views Asked by At

I'm using Terminal on Snow Leopard.

At the command line, if I've typed foo.bar.baz.bang.quuz.quux, when i tap option-B, it moves the cursor backward word by word -- stopping at every period, because it considers a period to be a word boundary. Likewise, option-F moves forward word by word.

In irb (0.9.5, ruby 1.8.7), option-B and -F also have this behavior, but the period is no longer treated as a word boundary, which makes these keyboard shortcuts significantly less useful.

How can I change this?

EDIT: Curiouser and curiouser: On an EC2 instance which has the same irb and ruby versions, the period is treated as a word boundary.

3

There are 3 answers

1
Casper On BEST ANSWER

Could this be of relevance here?
http://jorgebernal.info/2009/11/18/fixing-snow-leopard-ruby-readline/

In any case make sure option-B/F are actually bound to forward and backward-word in your inputrc files, like John pointed out.

Also word boundaries are determined by your locale (see the "locale" command), and more specifically by LC_CTYPE (character classification). I don't think that's the problem here, but you might want to check out and compare your locale settings just in case.

2
edmz On

I think this has more to do with the Readline module.

The word break characters can be changed. Run this in your IRB and see what characters is Readline using:

Readline.basic_word_break_characters

Readline is part of the standard ruby library: http://ruby-doc.org/stdlib/libdoc/readline/rdoc/index.html

0
drummondj On

Readline also uses the following configuration files:

  • /etc/inputrc
  • ~/.inputrc (or a filename specified by the environment variable INPUTRC)

This can cause different behavior on different machines (but probably not between ruby versions - I guess ruby adds another layer of configuration on top).