diff options
-rw-r--r-- | lib/reline/line_editor.rb | 2 | ||||
-rw-r--r-- | test/reline/test_key_actor_vi.rb | 12 |
2 files changed, 13 insertions, 1 deletions
diff --git a/lib/reline/line_editor.rb b/lib/reline/line_editor.rb index 9703a8c9f3..8153aaba05 100644 --- a/lib/reline/line_editor.rb +++ b/lib/reline/line_editor.rb @@ -1430,7 +1430,7 @@ class Reline::LineEditor if @waiting_operator_proc if VI_MOTIONS.include?(method_symbol) old_cursor, old_byte_pointer = @cursor, @byte_pointer - @vi_arg = @waiting_operator_vi_arg if (@waiting_operator_vi_arg || 1) > 1 + @vi_arg = @waiting_operator_vi_arg if @waiting_operator_vi_arg&.> 1 block.(true) unless @waiting_proc cursor_diff, byte_pointer_diff = @cursor - old_cursor, @byte_pointer - old_byte_pointer diff --git a/test/reline/test_key_actor_vi.rb b/test/reline/test_key_actor_vi.rb index b3d49c9bbb..5a8c4ac64d 100644 --- a/test/reline/test_key_actor_vi.rb +++ b/test/reline/test_key_actor_vi.rb @@ -1454,4 +1454,16 @@ class Reline::KeyActor::ViInsert::Test < Reline::TestCase assert_cursor_max(1) assert_line('c') end + + def test_vi_motion_operators + assert_instance_of(Reline::KeyActor::ViInsert, @config.editing_mode) + + begin + input_keys("test = { foo: bar }\C-[BBBldt}b") + + assert true + rescue NoMethodError + assert false + end + end end |