pimutils / todoman

✅ A simple, standards-based, cli todo (aka: task) manager.
https://todoman.readthedocs.io
ISC License
482 stars 76 forks source link

Navigating tasks with vim keys #531

Open IgnacioJPickering opened 1 year ago

IgnacioJPickering commented 1 year ago

I would like to navigate the TUI using vim-style keybindings (hjkl, triggered by the "escape" key). Is this a possibility?

WhyNotHugo commented 1 year ago

It might be simpler to configure ctrl+j, ctrl-k, etc (kinda like what fzf does). Modal editing might require more complicated changes (but should still be doable).

balejk commented 9 months ago

I have not spent any time trying to find out who is "guilty" for this (my terminal emulator/todoman/framework that todoman uses for interactive mode if any), but I accidentally discovered that Ctrl+o opens the currently focused field in external editor (vim in my case). I'm pretty sure that it is not a feature of my terminal emulator, which means it could work for you too. It will not help you with switching fields but it should if you are looking for a way to edit the individual fields in vim-like way.

Regarding switching fields: Ctrl+j/k would indeed be one natural possibility, another one would be (Shift+)Tab since Tab does not seem to currently insert an actual tab or do anything else. khal implements the latter.

Edit: it seems that the field jumping using tab is already being discussed in #204. Also my guess is that urwid is the one responsible for the open-in-editor feature.

WhyNotHugo commented 9 months ago

The Ctrl+o thing is a todoman feature:

https://github.com/pimutils/todoman/blob/27c45f0de5a9f9b92bec8eff18ce7d0757ba4260/todoman/widgets.py#L63-L65

WhyNotHugo commented 9 months ago

ctrl+k is mapped to "delete till end of line". I'm not sure why this is. Maybe readline compat?

balejk commented 9 months ago

The Ctrl+o thing is a todoman feature:

Ah, I see, very cool!

ctrl+k is mapped to "delete till end of line". I'm not sure why this is. Maybe readline compat?

I presume (based on the other issue) that moving between fields is handled by urwid?

WhyNotHugo commented 9 months ago

The function that I linked above delegates any "unknown" key mappings to urwid. Arrow keys must be implemented by them.