Skip to content
New issue

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

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

Already on GitHub? # 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
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Development

No branches or pull requests

3 participants