>Composition: The magic of vim is that it’s comprised of lots of small primitives that compose well together. Among these primitives are motions, operators, and text objects.
This popular Stackoverflow answer also explains vim's concepts of "verb + noun": https://stackoverflow.com/a/1220118
Also, a lot of beginners are perplexed why vi uses "hjkl" keys for cursor movement. It's because the 1976 ADM-3A terminal didn't have any dedicated arrow keys like the 1986 IBM PC 101-key layout:
https://catonmat.net/why-vim-uses-hjkl-as-arrow-keys
https://en.wikipedia.org/wiki/IBM_PC_keyboard#Keyboard_layou...
The "hjkl" overloaded with arrow movements is also related to why vi requires a "insert/append mode" that more modern text editors don't need. In vi, you're initially in "command mode" and you have to press 'i' or 'a' to insert or append text. In contrast, if you develop a new text editor after the introduction of keyboard hardware that has dedicated arrows/PgUp/PgDn/Home/End/Ins/Del/Fn1-Fn12, you no longer need to architect the editor software to have 2 special modes. Overloading the A-Z alphabet keys with non-text commands is what motivates having to switch between 2 modes. This leads to vi users repeatedly pressing the Esc key multiple times to really make sure they're no longer in text input mode. Instead of "<Esc>:wq<Enter>", the vi "wrong mode by accident" paranoia leads to "<Esc><Esc>:wq<Enter>".
(EDIT ADD: the Esc key double-tap as reflexive muscle-memory may also be related to timeoutlen which many vi users are unaware of and don't change: https://stackoverflow.com/questions/15550100/exit-visual-mod...)