[QUESTION] How efficient is ergol for VIM and for terminal shortcuts in general?
lobre opened this issue · 4 comments
Hi @Nuclear-Squid,
I don't know if I am supposed to discuss this in French or English here, so I am starting in English.
I have been a long-time bépo-typist, but I was never entirely satisfied, primarily when writing in English. Since then, I have followed all the possible threads in typist forums and tested numerous layouts proposed by the communities but was never attracted by a solution that was good enough to replace my current bépo.
But I feel that ErgoL is different. It seems well thoughts and it answers a lot of problems I have with bépo. I am not yet sure that I am ready to lose time learning a new layout, but before doing so, I would love to have feedback as you seem to be using it for quite some time now. As you may guess, here are a few of my interests when looking for a layout:
- It needs to be practical in French.
- It needs to be practical in English (almost even more than in French).
- I am a developer, so easy access to symbols is important.
- It needs to be easily adaptable to sub-50-keys keyboard (I own an Atreus).
I like it when things are logically organized, so I enjoy that ErgoL has all the accents on the same layers and the same with special characters.
Even if layouts are a personal choice, I do appreciate when a layout has support from a community and when it has a chance to become one of the choices amongst multiple "standards". In that regard, I'd be glad if ErgoL was getting even more popular!
Anyway, one of my concerns is knowing whether ErgoL is convenient when used in vim? I don't know if you are using vim, but are those few key pairs convenient?
- J/K (top/down moves)
- H/L (right/left moves and top/bottom of the viewport)
- P/N (for completions and menu browsing)
- B/F (backwards/forwards especially for half-page scrolls)
- <c-[> (for escape)
And the same concern for readline/emacs-style navigation in the terminal, did you notice any specific problems?
I'd be happy to chat more generally about ErgoL by the way. To me, it has strong advantages over bépo and I am sure many bépo typists could be convinced easily if the layout was better known and documented.
Thanks for putting together this awesome layout!
Hi @lobre !
I'll start off by stating a few disclamers, to get them out of the way now : while I do use neovim daily, I never used readline or emacs, so I won't be of much help on those subjects. The layout is also still evolving, and I have a few gripes with the current design (though they are pretty minor) :
- I'm not entirely happy with the current Alt-gr layer
- The letter
u
feels really nice most of the time, but leads to the worst bigrams and trigrams in the whole layout.
I'm currently working on a better Alt-gr layer, but I can't say right now when the new version will come out, since I struggle to improve on the current design. One of the main problems I have with this Alt-gr layer is that it is incompatible with keyboards without a number row, so you'll sadly need to setup a "programming symbols" layer on your Atreus (if it isn't the case already).
I'm debating if the letter u
even needs fixing, as while some words (mainly "aucun" in French) do feel horrible, they are relatively unfrequent and moving this letter would mean drastic changes to a layout that feels otherwise very clean. This problem may impact you more than other people, since after a (very) quick look at your GitHub profile, I saw that you code in Go often, and it seems (I never coded in Go so I may be wrong) that the keyword to define a function is func
, which is one of those horrible words. I personally avoided the problem with an alias in my vimrc that replaces fnt
with function
, as I was tired of typing this word in OCaml.
As for your question : How efficient is Ergo-L for vim ? I'd say that appart from a few exception, it feels pretty good.
I'll start by getting <c-[>
out of the way now, since I honnestly don't know how to cleanly escape on an Atreus, since my usual tactic is to swap capslock and escape (which doesn't seem to work on an atreus). I've asked some friends if they had insight on the matter so I'll get back to you if I find an answer (:
I tried to keep vim in mind when placing a few of the letters, that's why J/K and W/B are mirrored on the center of the keyboard. I'd say the letters B
, W
and Y
tend to feel weird in some text objects, mainly cw
, dib
and yi<anything>
, which is something to note, but definitely not a deal breaker in my eyes. Most other keybindings feel really weird at first, since you basically have to relearn vim, and consequences for typos are a lot more drastic than when just typing text, but once you get used to it it's basically the same as before.
The big one though is H/L. It feels very weird at first for just general movement in vim, more so than most bindings, I'd say. I personally pretty much never use them for general movement since I prefer using E/W/B or T/F for lateral moves, and spam {/} or J/K like an idiot for vertical ones. By far, they feel the worst when you are forced to use hjkl
, typically when I open a file with ranger. I """fixed""" the problem by having arrow bindings on hjkl
on the "non printable symbols layer" of my Keebio Iris, but at this point it kinda feels like cheating.
Oh and when you said "I am not yet sure that I am ready to lose time learning a new layout", yeah I've completely thrown out my touch typing experience 5~6 times when designing Ergo-L, plus a lot of minor modification here and there, so I definitely know your pain lol.
Hi @Nuclear-Squid ,
Thanks for this detailed answer!
Effectively, Go is one of my languages of choice. But it is good to know the current pain points that you have with the current version. Often, keyboard layouts need a large amount of practice so that you can identify real problems with real use cases.
Speaking about vim, I noticed that J/K and W/B were mirrored but I did not know that it was intentional. That is a nice addition!
As I currently type in bépo (and I did not want to rebind all vim keys), I have already been in that situation where I needed to re-learn the positions of hjkl so, in the end, it does not seem to be too much of a problem. And I have always mapped H
to "High" and L
to "Low" in my head for jumping around in the viewport. So their position might not be that important.
I must admit that I also use other motions such as {
/}
or f
/t
for lateral moves.
It’s been a few days and I have dug into keyboard layouts again (I feel that you always end up questioning your keyboard layout from time to time xD), and so I have done many searches since I created this issue and read many papers and blog posts.
And so I feel in the end that it should not be that much of a goal to optimize a layout with vim in mind. When thinking about it, a vim user will probably use j
a lot, so maybe having this key under a strong finger is a good idea. But this could also be a mistake because j
is not a key that appears in the top-most typed letters (either in English or French).
To make a correct analysis that would be vim-aware, one of the solutions could be to incorporate a vim log (all the letters typed in a long vim session, whatever the mode) in the corpus. This way, the moves around vim objects such as viw
, cap
, dw
or any others would weigh in the appearance of bigrams and trigrams, and so on their placement on the keyboard.
That is a topic on its own, and I’d be interested in conducting the analysis someday ^^.
Anyway, thanks again for answering as precisely. And I guess we can close this "issue".
I have some other general questions about your layout, but I will post them on dedicated issues!
Hi !
I'm happy that you liked my response ^^ I'd just like to add (because I forgot to mention it in my original comment) that I did not forfeit typing efficiency to have W/B and J/K mirrored.
I feel in the end that it should not be that much of a goal to optimize a layout with vim in mind.
I completely agree with this sentence, vim combos are super specific and would absolutely ruin any data in a corpus, if it were to include it. Furthermore, there is already a perfectly ergonomic keyboard layout for vim and it's Qwerty...
For the placement of J/K and W/B, I saw that it was practical to place them in the center column, that having W/J on the left side and B/K on the right would mean that their only combos would be hand changes (well, except for "br", which isn't that bad), so I thought "well at this point I might as well mirror them".
ps: don't worry, I saw your other issues, I'll respond to them in a bit. School work is currently taking a bit more time then expected lol
Furthermore, there is already a perfectly ergonomic keyboard layout for vim and it's Qwerty...
That is an interesting thought! I partially agree. That is true that vim
has been created with Qwerty in mind, so one would say that this is obviously the best layout for the job. But at the same time, I am not sure that ergonomics drove all the decisions when vim was created. Many keys were chosen due to their meaning more than to their position. So I fill that it may exist a layout that can be ergonomically better optimized than Qwerty to do vim!
The first obvious argument is esc
^^. Why would anyone build a tool with so many dependencies on a key that is the farthest from your hands? And another example that comes up is the placement of {
and }
on a Qwerty. They are under the pinky and I personally use them a lot. So it makes me think that if the goal was simply to establish the best keyboard for vim, different choices could be possible, but that would have to be verified with a corpus and some analysis. Of course, it all depends also on which content and which language is used in insert mode... :-)
Thanks for the explanation for the placement of j/k and w/b, this mirror definitely makes sense!