VIM-like modes/keybindings

Is your feature request related to a problem? Please describe.

I prefer software and services which have keybindings similar to the [VIM ](Vim (text editor) - Wikipedia) text editor. In it’s simplest form it focuses “hotkeys” to the home row, minimizing the need for the arrow keys and the mouse. This is accomplished by having different [modes](Vim (text editor) - Wikipedia).

Example: In insert mode you use all key as input keys for text. By pressing escape you leave insert and enter normal. Here all the keys instead perform different functions/actions, and not input. You can go back to insert by pressing i.

Describe the solution you’d like

Two modes. A command mode, where I interact with anytype using single key presses. A input mode, where key presses results in actual text.

Describe alternatives you’ve considered

Two modes is the dream. However, since this probably is a quite a lot of work for a small userbase I suggest something more lightweight and hopefully realistic. It essentially comes down to additional hotkeys, rather than having different modes.

I’ll try to explain this with a series of action.

    1. I’m in a block typing text. The arrows moves the cursor.
    1. I press escape, the cursor “leaves” the block. Arrows now move the page up/down
    1. j and k also move the page up/down (similar to VIM)

In general, HJKL can be used in place of arrow keys. E.g. when navigating the / command menu.

Additional context

Example implementation. The search engine DuckDuckGo has the following key bindings for navigation (see [move around](Keyboard Shortcuts | DuckDuckGo Help Pages)):

  • ↓ or j — next search result
  • ↑ or k — previous search result

Additional additional context

Thanks for the alpha user presentation on zoom today :slight_smile:

13 Likes

+1 for the vim keybindings, I love to use it in obsidian, would like to see it in Anytype too.

2 Likes

I feel like this has been talked about before and is a highly requested feature, maybe in the Telegram chat group. Anyway, I can’t find anything related to this in the forum, I 100% agree with the concept of having vim keybindings, though the details could of course change.

1 Like

Different but related, my proposal for “modes” for editing vs. block manipulation:

https://community.anytype.io/t/-/1072

I am not a Vim user nor familiar with its specifics, but I do like the idea of modes, whether they’re “true” modes (i.e. you are in a mode until you switch out of it, then you are in that mode until you switch again) or more “dynamic modes” like I describe in my post above, e.g. “hold down a modifier key temporarily shift to a mode”.

I would like to add that whatever key binding it is to go into that mode should be hard to accidentally get into-- maybe a 3-key combination with alt? I can see a very frustrating situation for an end-user with no experience with key bindings getting stuck in the wrong mode.

1 Like

@laurara This is one reason why I dislike Vim’s approach and prefer a “dynamic/temporary mode” as described in the post I linked to above.