I am using vi for many years and am loving it. I am trying to make ergodox layout that would follow the same principles: normal mode for movement and commands, insert mode for typing, you get the idea.
I am also struggling a bit with reachability of many keys. Only the closest button (space/enter on my layout) on the thumb cluster is really comfortable to press, the one next to it (backspace/delete on my layout) is already putting some strain on the thumb tendon and the others are just difficult. Surprisingly, I find it difficult also to press the innermost column of keys on each index finger (two vertical 2U keys + one 1U key on top of them), especially the 1U key in the corner. Originally, I put single-quote and back-tick on them, but as those are frequently used keys while programming in vi, I have moved them around quite a bit and numbers 5 and 6 ended up on those keys, now. Not sure how well will this setup work, will need to try it out for a while.
My current version of the layout is here:
https://configure.ergodox-ez.com/layouts/vJzQ/latest/0There is 13 layers, but some of them are unused (in order to get the LEDs shining the way I want them to for specific layers, e.g. blue led only for `qwerty` a.k.a "insert mode" layer). For this reason, they are in a bit weird order as well. And then half of them are just mirror image of some other layer, because I want to be able to type using just one hand - it seemed like an useful thing, but I never used it really, so if it becomes too much pain without real benefits, I'll remove them in some future version.
Really interesting are just 4 layers, displayed on the picture below in a sensible order (see above):
Now, I am forced to use Mac at work for now, so the layout is Mac-specific. I am in process of getting Linux machine, so I plan to modify it for Linux then.
Also, I am a bit new to all this, so I still need to learn how to use QMK directly to write code specifying the layout. So that I can send multiple codes on single key-stroke (e.g. `C-a n` and `C-a p` for switching between tmux/gnu-screen windows, `C-w [hjkl]`, `C-w [HJKL]`, `C-w [_|=]` for manipulating vi windows, `:tabprev<CR>`, `:tabnext<CR>` for manipulating tabs, etc. - there is plenty of vi combo-hits to map:
https://github.com/mareq/skel/blob/master/dotfiles/vimrc#L598 )
I am also thinking of getting it even closer to vi-like behavior by mapping e.g. `C-c` to Y letter in normal mode, but also e.g. maximizing window to `C-w _` (i.e. CTRL+W needs to switch layer, which maps underscore to maximize window shortcut used by window manager). Visual mode would be pretty difficult to do (if possible & practicable) - should V key in normal mode switch to separate layer, which makes SHIFT key depressed all the time (is something like this possible to do with QMK?).