Wheel: Navigation framework for Vim
github.com
github.com
1. If we want to switch between windows on a desktop, we use alt-tab.
2. Suppose we could arbitrarily group the windows from multiple applications into a single entity (sort of how Ubuntu defaults to grouping all terminals for application switching). For example, say we have a terminal and a web-browser in a group, and a file explorer and a web-browser in a group. We can switch between the two groups and within a group we can switch between applications.
Why do we care? If you have a large number of applications open, it's tedious to alt-tab through them all to get to the application you want. Other mechanisms exist, like ctrl+f10 for kde, but there is some economy of motion in a tree traversal vs looking at the applications, finding the one we want out of a large display of them and typing in the name of the application to bring it up. For example, if we want a particular terminal when we have 5 to switch between with 20+ other apps also running. ctrl-f10 breaks up the nice flow of alt tab and alt tab takes too long if we want to change between 5 applications rapidly.
3. Over time you may end up with a lot of groups, making navigation by group tedious. Lets introduce another level, say categories. Categories contain groups. So you can switch between Categories, within a category you can switch between groups, within groups you can switch between applications.
This plugin acts like the desktop framework above, but for files and with more features.
However, thinking a bit more about it, I simulate something like author's kind of hierarchy with vim+tmux: for each distinct activity I usually start new tmux session (e.g. frontend, backend, terraform, etc.). For each project inside the activity I usually have 1-2 tmux windows with vim opened in the root of the repo, e.g. in the backend I'd have vim with microserviceA, vim in microserviceB, vim with shared library and a shell with REPL and docker logs. So it goes tmux session -> tmux window -> file in vim. Switching files in vim within a project is a solved problem (fzf and language servers).
The downside of that is that it's not always possible to jump from a file in one vim into another within a session, I have to manually switch windows. But most of the time `gd' works if you have import paths set correctly.
So I'd need something which stores relative path..
Edit: actually it's mentioned that the author has previously written about the same thing for Emacs—borrowed from someone else but rewritten from scratch.
but if you throw the word lua in the description somewhere that'll net you a couple hundred stars from the nvim people.
edit: i am an nvim/lua person.
With neovim rpc you can write glorious plugins in TypeScript and Python such as coc.nvim [2].
Other than that, I'm inspired by amount of work you put in the project.