Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Readline vi-mode doesn't work as expected #725

Open
m-chrzan opened this issue Jan 8, 2020 · 2 comments
Open

Readline vi-mode doesn't work as expected #725

m-chrzan opened this issue Jan 8, 2020 · 2 comments

Comments

@m-chrzan
Copy link

m-chrzan commented Jan 8, 2020

Problem overview

The new irb version appears to have problems with vi-mode readline (don't know about emacs-mode).

Not sure what the full extent of these problems is, but noticed a few common normal mode commands not working as expected. These include:

  • A does not jump to the end of the line
  • similarly, I does not jump to the beginning of the line
  • t enters insert mode instead of waiting for a character and then jumping before its first occurence after the cursor. Similarly with T and F (f appears to work correctly)
  • u doesn't undo the last edit
  • c is a no-op instead of waiting for a movement, then changing text between cursor and movement destination

I imagine this problem is more widespread and there are other readline functionalities that don't function as expected. All of these work as expected in irb --legacy and other readline programs (e.g. bash).

Steps to reproduce

(this is all on irb-1.2.1 installed from GitHub)

To reproduce the first issue from above, set readline to vi-mode, e.g. by modifying ~/.inputrc:

set editing-mode vi

Start irb, then enter the following sequence of keystrokes:

123<escape>BA

This results in the buffer containing the following (^ indicates cursor position):

A123
 ^

in normal mode, whereas irb --legacy (or another readline program like bash) would lead to

123
   ^

in insert mode.

@aycabta
Copy link
Member

aycabta commented Jan 16, 2020

Thank you for your reporting!

Memo:

@ilikepi
Copy link

ilikepi commented May 19, 2022

Here are some other things missing, tested in irb 1.4.1:

  • ; and , are no-ops; should repeat the previous find action (f or F + a character)
  • ~ is a no-op; it should change the case of the letter under the cursor
  • s is a no-op; it should yank the character under the cursor and enter insert mode
  • S is a no-op; it should yank the entire line and enter insert mode
  • C is a no-op; it should yank text from the cursor to the end of the line and enter insert mode
  • R is a no-op; it should enter replacement mode

@ima1zumi ima1zumi transferred this issue from ruby/irb Jun 12, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

3 participants