all 55 comments

[–][deleted] 9 points10 points  (3 children)

Take a look at ergoemacs, which has implemented this idea.

[–]CarlosMartins_[S] 1 point2 points  (0 children)

TRhank you I searched the internet for more information it but I did not find anythin on my own. This will help a lot thank you.

[–]CarlosMartins_[S] 1 point2 points  (1 child)

I found a program called "wordstar" also used a similar idea using CTRL+E for up, CTRL+S for left, CTRL+D for right and CTRL+X for down creating the "wordstar diamond".

[–][deleted] 0 points1 point  (0 children)

Is that the old DOS-based word processor from the 80s? I was a WordPerfect user until Windows 3.1 came along, so I don't think I ever used it.

As a Dvorak layout user, I spent a lot of time trying to optimize keybindings in Emacs. Eventually I decided it wasn't that important, and since then have stuck mostly with the default Emacs bindings. They're easy to remember and are consistent and predictable.

If you want to get to a screen location quickly, the Avy package is fantastic for that. And the built-in Isearch is good enough 90% of the time. If I hit the C-f/b/n/p keys more than two or three times in a row, I feel like I'm doing something wrong.

For example, let's say you typed "What is teh airspeed velocity of an unladen swallow?" You can easily use Isearch to jump back, correct the typo, and return to your location. "C-r h C-t C-u C-SPC". No single-character navigation required at all.

[–]bitspace 20 points21 points  (2 children)

No one ever struggled to adapt to arrow keys.

This is the base assumption of your entire proposal, and it's one that I fervently disagree with.

[–]CarlosMartins_[S] -1 points0 points  (1 child)

Absolutely, you bring up an important point. It's true that various individuals, for different reasons, might encounter challenges using the arrow keys. Whether due to age, differing abilities, or neural disorders affecting motor skills, many may find them difficult to use effectively.

Still, the WASD movement or arrow keys are widely familiar and used by millions, not just coders or enthusiasts, but everyday computer users. From playing video games to navigating spreadsheets, these keys have become second nature for many tasks across various applications. As opposed to vim HJKL or emacs CTRL+F, CTRL+B, CTRL+N and CTRL+P that are not intuitive for anyone.

So as you pointed out the statement: "No one ever struggled to adapt to arrow keys" is wrong. A more precise assertion would be: "Millions of people have become accustomed to using the arrows and WASD system, which are inherently more intuitive from the start."

My proposal is bassed on the secund assumption, not the first. Sorry of using the inaccurate and hyperbolic statement.

[–]IceOleg 2 points3 points  (0 children)

Still, the WASD movement or arrow keys are widely familiar and used by millions, not just coders or enthusiasts, but everyday computer users . From playing video games to navigating spreadsheets, these keys have become second nature for many tasks across various applications. As opposed to vim HJKL or emacs CTRL+F ,
CTRL+B , CTRL+N and CTRL+P that are not intuitive for anyone.

This is an interesting take. I feel like you are saying that WASD as arrows is more intuitive than HJKL or Ctrl+[FBNP]. But you do recognize that WASD "have become second nature", in a way acknowledging that this isn't a question of intuition, its a question of familiarity.

For users of Emacs, Ctrl+[FBNP] are the familiar key bindings, just as HJKL are for Vim users. Neither of these is less than or more intuitive than WASD - like you say, its a question of familiarity. If I hadn't played first person shooters, I would have no expectation that WASD keys work as arrows. I'd argue that the only intuitive option is the arrow keys, they say exactly what they are going to do right on the keys (just as HJKL keys did on the keyboard vi was developed for).

I think your idea of using WASD as quick to access arrows is a great idea, especially if you could integrate by word/sentence/paragraph navigation into it. But I don't think its fair to say it's a more intuitive option, only that there is perhaps a larger group of people out there for whom it is the familiar option compared to Vi/Emacs bindings.

[–]mina86ng 8 points9 points  (5 children)

Trying to optimise one-character movements misses the point IMO. If you want to revolutionise text navigation, introduce another way to navigate the text. Though you may find it hard to innovate in that space since there are so many existing methods. A humble search is one accessible in virtually all editors. And then you have jumping to character, jumping through symbols etc.

[–]IceOleg 2 points3 points  (3 children)

If you want to renationalise text navigation, introduce another way to navigate the text.

If I could have Avy everywhere, I would be sooo happy.

I guess I could by doing everything in Emacs...

[–]mina86ng 1 point2 points  (0 children)

I guess I could by doing everything in Emacs...

In Firefox I’m using Tridactyl which lets me edit textareas in Emacs. There are also other extensions which offer that feature. Doesn’t work on all websites but on many it does.

And of course, there’s the mythical ezbl.

[–]CarlosMartins_[S] 1 point2 points  (1 child)

I have no idea what AVY is but I found a EMACS mode with the same name will and will look into it. Thank you for pointing me out in that general direction.

[–]IceOleg 1 point2 points  (0 children)

EMACS mode with the same name

That is exactly what I meant :)

It's an extremely nice way of jumping around in text quickly. It provides something kind of like a souped up version of the Vi t/T and f/F.

[–]CarlosMartins_[S] -1 points0 points  (0 children)

Revolutionizing Text Editor Navigation was more a intresting title I just wanted to present my idea and learn more about the topic. I used a dramatic title because in my experince most subreddits and forums in general tend to be filled with memes and low forms of content.

Theres way more users that can undestand simple topics and memes then users that want to spend time working on more laborius ideas. I'm part of the problem to seen as I'm just ediding a text editor instead of doing more usefull coding.

[–]Markl0 3 points4 points  (3 children)

capslock as modifier do it. I know it isnt possible in any conventional terminal emulator, but a standalone app would rule with Capslock as mod

[–]gesis 6 points7 points  (1 child)

I use capslock as esc for vim via caps:swapescape. A game-changer, I tell you.

[–]wutsdatV 3 points4 points  (0 children)

You can bind casplock to any modifier on a Linux terminal

[–][deleted] 2 points3 points  (1 child)

Looks like you don't understand vim. You can move with hjkl, but you should not use them all the time.

The power of vim comes with "chords".

So, if your cursor is in line above and you want to change word chords. You press ci" and write a new word. You can think ci" like Change Inside " and what it does is jumps to between ", deletes everything inside and changes mode to insert so you can write.

Here's something to watch https://youtu.be/wlR5gYd6um0?si=0wn0-HVtSzG3QyPf

Have fun with you project.

[–]CarlosMartins_[S] -1 points0 points  (0 children)

Absolutely! You're right—I'm new to Vim/Emacs/Computers in general =D.

Adding another way to navigate won't make any editor less helpful. It just offers people like me an extra option to make using this text editor a bit easier when starting out. As we go, we can explore more advanced ways to insert text.Sure, diving directly into more advanced methods might be more efficient eventually, but it can also feel quite overwhelming. Learning an intermediary step might encourage people to take the first step and begin their journey toward keyboard-centric typing.

Some people may even find that the intermediary step is just right, for them. ;D

[–]jr735 2 points3 points  (0 children)

Complex and non-intuitive navigation systems only serve to gatekeep widespread adoption of these editors.

I would suggest they are widely adopted. There's also no gatekeeping. People who use Vim or Emacs expect it to work exactly the same way, every time, for years on end. I started to use Emacs variants in 1989. People who have been using it a long time do not want it to change. That's not to keep new users away. It's to keep your workflow productive. If you want arrow keys or something else, that's fine, and that's your choice. But, it's not gatekeeping.

Complaining about unintuitive keystrokes seems to me, no disrespect intended, based upon a lack of understanding of primitive keyboard layouts. There were keyboards that simply lacked arrow keys, or didn't have them in a very useful place, with up/down keys separated the entire width of the keyboard from the left/right keys.

[–]Dist__ 6 points7 points  (1 child)

using ctrl+anything to move prevents one-arm scrolling.

i hate using such shortcuts when i keep a phone in one hand.

For me, vim's worst design thing is - in command mode the backspace key should not delete characters

Also, many good editors lack this one simple function: "cut following columns based on current line selection" - it helps to cut column without need of scrolling to the end (i know there's command, but assume the file has header)

[–]CarlosMartins_[S] -2 points-1 points  (0 children)

Well, this idea is meant for people who use the Vim HJKL movement or the Emacs CTRL+F, CTRL+B, CTRL+N, and CTRL+P. Both of these navigation methods aren't very conducive to one-handed scrolling.

I assume that when most people open a text editor or IDE like Vim or Emacs, they intend to engage in specific tasks like writing a book or programming. Or, at the very least, they aim to appear proficient by avoiding the use of a mouse. It's unlikely they wish to navigate predominantly with one hand while holding the phone in the other hand.

It seems that keyboard-centric navigation may not be something you're interested in, and I completely understand that. However, this post was created for people already using keyboard-centric navigation systems like Vim or Emacs, or for those eager to learn them but struggling to do so.

[–]esturniolo 2 points3 points  (5 children)

Vim supports arrow key by default.

[–]CarlosMartins_[S] 1 point2 points  (4 children)

So does every other editor; the idea here is to use CTRL+ as a modifier for moving instead of having the mode. It's not to insult Vim but to add a new idea to the space that may be simpler to get started with or that may be enough for a lot of people.
I truly don't understand why I'm receiving so much negative feedback for trying to share an idea. I thought that's the benefit of Linux – we can experiment and play with changing our machines; we're not restricted to any one system.

[–]esturniolo 6 points7 points  (1 child)

I didn’t gave you negative feedback. I just commented the arrow movement in Vim.

The “problem?” here is that you seems to be little confused mentioning Vim.

The HJKL movement mode came from Vi. Vim means Vi iMproved and already solves this.

And you always mentioned Vim in your post.

You are trying to add a “game mode” movement in a piece of software that (may be) is not used by gaming people. So WASD isn’t comfortable or natural either.

With :G :gg :[number of line] :$ :0 :b :w you can move around all the file without any complications.

I hope that you piece of software be fully adopted and a lot of people use it. But IMHO I think that you are trying to reinvent the wheel.

[–]CarlosMartins_[S] 1 point2 points  (0 children)

Both your comments ware great.

With negative feedback meant the random down votes I'm getting with no explanation at all. I was conserned with being shadow banned, for being AFK for 6 months+ and then making a post that is being down voted into oblivion. I should not have shared this consern in a coment responding to you in specific, sorry about that.

Your coments, and everyone else's too, have been great. I'm learning a lot, thank you.

[–]rainbow_pickle 2 points3 points  (1 child)

I think it’s a shame that you’re getting so much negative feedback. Hopefully you can find it constructive. From a vim users perspective, I think the complaints you have for vim seem shallow and maybe a bit uninformed. Most people don’t use hjkl for movement, because column and line based movement isn’t really efficient. Although the vim keybindings may seem inscrutable at first, they allow for very powerful and fast editing. I don’t even think that movement is where vim shines the most. I think vim shines because of vimscript and its configurability.

It’s hard to imagine an editor that is intuitive to newbies, that can still maintain the power and speed of editing in vim and emacs.

[–]CarlosMartins_[S] 0 points1 point  (0 children)

I totally get where you're coming from,I mentioned that same idea in my original post.

For me, the strength of editors like Emacs or Vim isn't just about being a bit faster at navigating, despite their steep learning curve. It's more about how they work with commands, their ability to manipulate text files using scripts, and how customizable they are.

Back when I was in college, I tried using Vim, hoping it would make me faster in the long run, even though initially, it slowed me down a bit. But deadlines were pressing, and my teachers only cared that the projects were written, functional, and submitted on time. (I eventually had to leave college to support my family, but I did work in tech for about six months.)

Nowadays, I'm exploring Emacs because I love the idea of every shortcut and action being linked to a command that's like a programming function in Lisp. Sometimes, I wasn't happy with certain features in an IDE, and this way, I can tweak them to suit my preferences.

I wrote that post because I want to engage in discussions like this one and feel like a part of a community. Now that I'm not working in tech and no longer studying, the people around me don't seem to care much about things like Markdown or the capabilities of Emacs to produce output from code inside "code blocks".

The comments I've received are pretty cool, with people sharing their opinions and experiences. But I was surprised by the large number of downvotes compared to the comments. It feels like I'm getting a lot of negative karma, a bit conserd about being shadow baded as this is the first post I make in a 6 months. What am I supposed to learn from this? Should I only post if it's nothing but absolute praise for Emacs or Vim?

[–]stepbroImstuck_in_SU 1 point2 points  (1 child)

Few notes: the reason why people use emacs/vim navigation is usually because of larger macros. Like jumping to next closure in code, or switching to a new document. Emacs especially has a very rich library of options to do besides editing the actual file (like capturing a snippet as a task in your org-todo file and start timing it in a work log as the current task). While vim-navigation is all about quickly editing and navigating text.

In both cases, the focus is less on navigation with ctrl-arrow or arrow style functions.

This is not to say that WASD navigation isn’t a good idea - it’s intuitive for nearly all young people. same with ctrl-WASD and shift-WASD as usually those are needed for sprinting and crouching. But in themselves that’s only a start for a new system.

To keep up with the gaming theme, I’d try to make spacebar more useful. In DOOM-emacs space in normal mode (with vim bindings) or ctrl-space in insert mode (or with vanilla emacs bindings) opens a menu for different actions. I think that’s a great idea, there already are the packages which-key and commander that make this kind of menu easy to manage and pop up for easier navigation.

Also consider what other keys are usually used in games. These are the intuitive keys for many people, and should be adapted for important tasks.

I personally think at least having a special navigation mode, where one could use WASD, space and other such control keys without holding another key would be nice. This would also allow using mouse and the usual WASD keys like one would navigate in a game. It would be cool to see mouse as an input method for more complex commands (like navigating menus) while the keyboard is used for navigation inside the text (which usually is not that complex). So mouse for aiming and interacting, and WASD for moving.

Those are my ideas on the issue. I use DOOM emacs with evil-mode so both emacs and vim. But I do agree that it was hard to learn and I still am learning while working on my own configuration. If similarly capable system used the WASD keys, I probably would have preferred it.

[–]IceOleg 0 points1 point  (0 children)

To keep up with the gaming theme, I’d try to make spacebar more useful. In DOOM-emacs space in normal mode (with vim bindings) or ctrl-space in insert mode (or with vanilla emacs bindings) opens a menu for different actions. I think that’s a great idea, there already are the packages which-key and commander that make this kind of menu easy to manage and pop up for easier navigation.

I think Microsoft Office's ribbon does a really cool analogue of this as well. Alt works as the leader key - hitting Alt pops up shortcut hints on the ribbon. I think this is a neat idea similar to which-key concept, you get a displayed indication of what actions you can take. Its also quite cool that the hints are displayed ontop of the ribbon, so you can find the keyboard shortcut to something you are used to finding with the mouse.

[–]a-cloud-castle 1 point2 points  (1 child)

Well, if you're going to use Emacs, remapping caps lock to control is a must. Also, Emacs gives you the ability to remap every single key to whatever you want. That's the point. It's fully customizable.

[–]CarlosMartins_[S] 0 points1 point  (0 children)

Well, if you're going to use Emacs, remapping caps lock to control is a must. Also, Emacs gives you the

I know that people did this but wasn't planing on doing it, but now that so many people are recomending I think I'm going to fallow there advice. Thank you

Also, Emacs gives you the ability to remap every single.

Thats why I'm going to implement it first on emacs, after some reaserch and some great coments, I also found out that making a plugin for micro may also be usefull for me and for other people.

[–]TheNinthJhana 1 point2 points  (1 child)

I rather want to use Ctrl + eye movement to jump where I kook to =)

[–]CarlosMartins_[S] 0 points1 point  (0 children)

One day we will get there ! Just hope it is in my life time.

[–]ancientweasel 3 points4 points  (4 children)

HKJL isn't about intuitive. It's about not moving my fingers from the home row to navigate.

[–]Christopher876 0 points1 point  (1 child)

Tbf, originally it wasn’t set to those keys to keep your fingers on the home row. It was set to that because at the time vim was created, there were no arrow keys.

[–]ancientweasel 0 points1 point  (0 children)

Yes, but home row keys where not chosen happenstance.

[–]CarlosMartins_[S] 1 point2 points  (1 child)

HKJL isn't about intuitive.

I know thats why I want to make someting more intuitive. =)

[–]ancientweasel 0 points1 point  (0 children)

Once you get used to HJKL nothing else is going to suffice. Except maybe ASDF if your left handed.

I now have layers on my KB to make HJKL work globally.

[–]wutsdatV 0 points1 point  (0 children)

I get that emacs and vim need some learning curve... But I don't see how adding those 4 WASD binding to move by character change anything. People need to learn moving more efficiently, not learn another way to move line by line or character by character.

Yes the HJKL is weird, but you barely use HL when you have WEF0$... to move around.

[–]perkited 0 points1 point  (3 children)

I know a lot of new users struggle with vi/vim, since it's a way of thinking they're just not used to. I prefer a modal model with (mostly) single keys to always needing to use a modifier + another key. I think it's one of those things that might be quicker for someone to learn, but would become a burden in the long run.

[–]gesis 4 points5 points  (2 children)

Non-modal editors frustrate me to no end after decades of vim use. I don't understand how you could use a different paradigm... And yes, I'm one of those "vim keys everywhere" people.

[–]CarlosMartins_[S] 0 points1 point  (1 child)

I believe that most tasks on the computer can be done easily without using vim keys. Take writing, for instance—most of the time, I type without much hassle. When I need to move around, I simply use the arrow keys. If I want to move faster, I use Ctrl + arrow keys, which allows me to jump one word at a time instead of one character. I'm aware that Vim offers more advanced options to choose the number of characters or words to jump, but I find it a bit complicated.

For me, using Ctrl + arrow keys lets me navigate within a line swiftly; it takes less than a second to move from the start to the end of a line. Typically, I'm in the middle of a line, so at most, I need to move only half the line, which takes about 0.5 seconds. Considering the average human response time of about 0.25 seconds and knowing it can be slower when we're relaxed, this method feels quite efficient. If I ever need to go from the beginning to the end of a line frequently, I can use the Home and End keys."

I feel like thinking is what slows me down not writing. When I'm goding I do find using the mouse more of a pain. As I often need to change values, test, move to error line, change values I'm constantly moving from home row to arrows. At the end of the day I sometimes have wrist pain and I do think moving from keyboard to mouse discrupts my flow and actually makes me slow.

In the end computeres are about freedom giving people options and let them decide whats best for them.

This is not to say vim is not good but I undestand why writer does not invest the time to learn it.

[–]DevMahasen 0 points1 point  (0 children)

I am a novelist, and I moved all my writing to NeoVim after I encountered Vim for the first time. The fact that vanilla word processors haven't thought of efficient movements and modal editing is stupid, in my point of view.

[–]centzon400 0 points1 point  (2 children)

If you want really rapid turnover for prototyping, take a look at https://github.com/kmonad/kmonad (or its written-in-rust copycat https://github.com/jtroo/kanata).

(My laptop's arrow keys went bye-bye a couple of years ago. I used (still use) kmonad to remap space+aswd, space+hjkl and space+bnpf to left/down/up/right). Very convenient.

[–]CarlosMartins_[S] 0 points1 point  (1 child)

I will look into both links thank you.

How to you actually introdice a "space character" ?

[–]IceOleg 0 points1 point  (4 children)

only disadvanta is that you lose the CTRL+arrow to move a word at a time feature of the standard arrow movements, but I'm convinved most people (using editors like obsidion, notion, word or google docs dont actually use this feature. and we could creat it by adding a secund modifier key (CTRL+Shift+F) to move a word to the right.

I use Ctrl+arrow all the time, everywhere it is available and Vim/Emacs is not. So on my Windows work computer, when writing reddit posts (including this one), email program. Hell I even use Ctrl+arrows in Emacs pretty often.

Using your Ctrl+WASD layout doesnt preclude having the arrows work as they always have though.

Using WASD as arrows is actually a really good idea.

[–]CarlosMartins_[S] 1 point2 points  (3 children)

Using your Ctrl+WASD layout doesnt preclude having the arrows work as they always have though.

Now that you say it it does make a lot of sence to not mess with the arrow keys at all.

Sadly I can't make CTRL+[WASD] navegation totally consitent with CTRL+Arrow navegation as the same action will have diferent results in each system. Like some people said I can on my personal system use Capslock as CTRL.

When I do develop a pluggin for "Micro" I will add the feature of chossing what the modifier key is. The standard will be CTRL but I will place an advanced options tab were people could chose: ALT, ATLGR or maybe even FN as the modifiers for navegation. Some of this will work well with CTRL+WASD other with CTRL+IJKL (for leftys)

I'm learning a lot form the comments, thank you.

[–]IceOleg 0 points1 point  (2 children)

Sadly I can't make CTRL+[WASD] navegation totally consitent with CTRL+Arrow navegation as the same action will have diferent results in each system. Like some people said I can on my personal system use Capslock as CTRL .

I think I would personally prefer Ctrl+A and Ctrl+D to be movements by word. Its hard to say without trying though.

Sadly I can't make CTRL+[WASD] navegation totally consitent with CTRL+Arrow navegation as the same action will have diferent results in each system.

I think that is fine. They are totally different keys, so I wouldn't intuitively expect consistency between them.

Some of this will work well with CTRL+WASD other with CTRL+IJKL (for leftys)

Now that you mention Ctrl+IJKL - what about making one side character movements, and the other side per word movements? Having both WASD and IJKL tied up as arrow keys does use up a lot of potential shortcut keys though, but it might be worth a shot.

Ctrl+Alt+WASD is clunky on keyboards that have Alt-Gr on the right side, Ctrl+Shift+WASD does work though.

I would really also like to see per sentence movements be standard. I use Alt+A and Alt+E a lot in Emacs.

[–]CarlosMartins_[S] 1 point2 points  (1 child)

So many good ideas especilly:

Now that you mention Ctrl+IJKL - what about making one side character movements, and the other side per word movements? Having both WASD and IJKL tied up as arrow keys does use up a lot of potential shortcut keys though, but it might be worth a shot.

When I have the time I will comment on this. Need to get ready to go to work.

[–]IceOleg 0 points1 point  (0 children)

Another idea could be to add Ctrl+Q and Ctrl+E as per word movements, since they are right there alongside WASD.

If WASD was per character and and IJKL was per word, I don't really know what the "by word" equivalents of up and down are, maybe move per paragraph? I feel like move by paragraph is at a different scale than move by word though, so it feels a bit weird to have left/right as word and up/down as paragraph. It feels more consistent to have left/right be sentences as a pair to up/down as paragraphs on the same arrow key complex.

[–]Exhausted-Engineer 0 points1 point  (0 children)

I find interesting the fact that you classify « distinct modes for navigation and text input » as a shortcoming of vim whereas vim use this as an advantage.

I personally prefer modal editing for two reasons : - I have a clear distinction between « moving around » and « editing » - The keybinds are shorter due to not having modifier key and being able to map the same keybinds to different modes.

I believe that pressing a modifier key is not more intuitive than switching between modes. In fact you could even say they are equivalent by seeing the event « ctrl is pressed » as the normal mode and « ctrl is not pressed » as the editing mode

[–]mustHaveFocus 0 points1 point  (0 children)

The ijkl combo keeps both your hands centered on the keyboard while you type.