Ruby, IRB e histórico de readline

Se suas teclas de seta imprimirem uma sequência de escape no IRB, pode ser devido ao módulo Ruby Readline quando usado com Readline.vi-editing-modee Readline 6.2.

Conseqüentemente, embora eu prefira o modo vi, desativei-o por enquanto para contornar o inconveniente do IRB.

Estou usando Ruby 1.9.3p392. No Ruby 2.0.0p0IRB, as teclas de seta se comportam de maneira um pouco diferente.

Veja este bug do Ruby.

1.9.3p392 :001 > a = 1
=> 1
1.9.3p392 :003 > [A # Up arrow pressed here,
# line should be "a = 1".

Verifique se o modo de edição vi está ativado:

1.9.3p392 :003 > Readline.vi_editing_mode?
=> true

No meu caso, foi definido devido ao meu $HOME/.inputrcarquivo.

set editing-mode vi

Verifique se o readline.bundle do Ruby foi compilado com o Readline 6.2:

ldd readline.so          # Linux
otool
-L readline.bundle # MacOS

Nota no MacOS, o módulo Readline pode ser compilado em libedit, que é um substituto para libreadline. No entanto, AFAIK, ele não implementa o modo de edição do vi. Nesse caso, você pode precisar mudar $HOME/.editrc. Google e StackOverflow irão ajudá-lo aqui.