Revolutionizing Text Editor Navigation an Altarnative to Vim and GNUEmacs
I firmly believe that the strength of editors like Emacs or Vim isn't just about gaining marginal speed gain in navigation at the cost of a steep learning curve. It's about their command-based approach, scripting capabilities to manipulate text files, and the extensive customization they offer. Complex and non-intuitive navigation systems only serve to gatekeep widespread adoption of these editors.
I'm embracing human-centric design principles from the book "The Design of Everyday Things."
I want to clarify that the system I'm designing is program agnostic, just like many folks integrate Vim keybindings into Emacs with Evil mode. My idea is adaptable to any text editor by tweaking keybindings. Let's delve into the flaws of both Vim and Emacs navigation systems.
Vim's shortcomings:
Unintuitive mapping of HJKL to (left, Up, Down, Right). Distinct modes for navigation and text input. The HJKL mapping in Vim isn't intuitive. People argue that once you're used to it, it's fantastic. However, I'm striving for something as simple as using the arrow keys. No one ever struggled to adapt to arrow keys.
Another issue is Vim's modes. Personally, I find the concept of modes less intuitive. I'm not an expert, but the idea of shifting modes to insert or perform tasks and then returning to 'normal mode' seems peculiar.
Emacs' problems:
Poorly mapped navigation keys. Complex keybindings deviating from the standard. CTRL+F (forward), CTRL+B (backward), CTRL+P (previous line), and CTRL+N (next line) were designed for easy recall but suffer from a mapping perspective. Let's break it down:
Using CTRL+F, CTRL+B involves moving fingers down and left to move the cursor right! And vice versa! You even use different hands to move up or down. The distinction between mnemonic 'previous' (CTRL+P) and 'backward' (CTRL+B) isn't clear.
My current concept involves using Ctrl as a modifier key and adopting the intuitive and widely known WASD system or my preferred IJKL keys to replace the arrow keys:
CTRL+W or CTRL+I CTRL+A or CTRL+J CTRL+S or CTRL+K CTRL+D or CTRL+L
I aim to keep existing shortcuts intact, such as CTRL+C for copy, CTRL+V for paste, CTRL+F for find, and CTRL+R for replace. This configuration aims to offer familiar functionalities while enhancing navigation, tapping into the familiarity of the WASD system used in games or the standard arrow keys layout. This system leverages the widespread adoption of the WASD system in games or the standard arrow keys.
The only disadvantage is that you lose the CTRL+arrow to move a word at a time feature of the standard arrow movements, but I'm convinced most people (using editors like Obsidian, Notion, Word, or Google Docs) don't actually use this feature. And we could create it by adding a second modifier key (CTRL+Shift+F) to move a word to the right.
I'm planning to implement this in Emacs as it's easy to do so editing the .emacs file and I won't have to think about modes. But eventually, I may code it into Gedit and even create plugins...
I look forward too feedback and ideas.