iPad: VIM Mode Keyboard Repeat Issue

Steps to reproduce

Using iPadOS 26

  1. Go into the global Settings app on iPad
  2. Go to Accessiblity > Keyboards & Typing > Key Repeat
  3. Set Key Repeat to ON
  4. Set Key Repeat Interval to 0.04
  5. Set Delay until Repeat to 0.2
  6. Go into a blank Obsidian vault and paste 15-20 paragarphs from lipsum.com into a new file
  7. Ensure you are in NORMAL mode (Hit ESC)
  8. Go to the top of the file
  9. Hold j - you should zip through each paragraph/line in the file until you reach the end, relatively quickly.
  10. (While at the end of the file) Hold k - you won’t move up. You have to keep hitting k to keep moving up, holding the key does not work.

You can also try to b (move backwards a word) - which goes fast, or w (move forward a word) which goes slow.

Video: https://imgur.com/a/8HhBnfE

Did you follow the troubleshooting guide? [Y/N]

Yes - created a brand new vault, pasted some text, no plugins, clean vault.

Expected result

All keys should repeat as quickly as j / b, but many do not like h,k,l,w etc… This makes VIM mode a bit like potato mode - repeats in VIM motions are essential to productivity and speed of access.

Actual result

When hitting the problematic keys, they simply do not repeat. You have to keep hitting h,k,l,w to keep advancing a word, character, etc.

Environment

SYSTEM INFO:
Operating system: ios 26.0.1 (Apple iPad16,6)
Obsidian version: 1.10.0 (244)
API version: v1.10.0
Login status: logged in
Language: en
Catalyst license: insider
Live preview: on
Base theme: adapt to system
Community theme: none
Snippets enabled: 0
Restricted mode: on

RECOMMENDATIONS:
none


Additional information

This appears to be a bug to me, I’m not sure if it’s in Obsidian or CodeMirror(?). There are some apps on iPadOS where key repeat works just fine - e.g.: Terminal apps (Shellfish, etc.) where I can hold h,j,k,l and they repeat.

I’m hoping this is fixable by the Obsidian team - VIM mode on iPad would be incredibly useful - but I am not pretending that this is a huge audience. I just recently started learning VIM motions and it’s definitely increased by productivity.

Does it happen in the Desktop App?

Does it happen in source mode?

Confirming a few more things:

  1. Desktop app works fine, all keys repeat as they should.
  2. Happens in source/preview modes
  3. From time to time (and I cannot recreate this), the “k” key (really only one I’ve tried) will start working and it will quickly go up a line, holding it jumps fast through the lines. When I command-tab out of obsidian and come back, it stops working. It’s quite intermittent, I can’t figure out what conditions cause this to activate, it’s a bit of a fluke.

Open Safari on your iPad and go here.

Does it happen there?

Yes it happens.. Some observations:

  1. Like in Obsidian, if I try long enough, eventually some keys that didn’t work (notably “k”) will work for a bit and quickly zip up the screen. However, refreshing the browser window and it doesn’t work.
  2. Keys that work in obsidian, work here (holding j,b)
  3. Looking at the keyboard capture at the bottom, the keys that work are captured and the numbers increment. Those keys that do not work are only captured once (but the very very odd times it does work, they are all captured).

Search/Open an issue in this repo and explain them how to reproduce the problem using their sandbox.

Thanks

Ditto on this.

Maybe this is obvious and goes without saying, but it seems to happen because iPadOS thinks you want to type an alternate character/accented character instead of repeating the key. Repeating works for ‘j’ and ‘b’ because there are no alternate characters assigned to those keys. Unfortunately, there doesn’t seem to be a way to disable this functionality in iPadOS settings.

My guess is that because it’s a iPadOS functionality thing, replit/codemirror isn’t going to be able to affect this.

Like the OP says, though, other iPadOS apps seem to be able to kill that alternate character/accented character functionality. I also use Blink, and in their app I can run vscode-web with a vim extension and move around with ‘h’, ‘j’, ‘k’, ‘l’, ‘w’, ‘b’ to my heart’s content.