{"id":13596178,"url":"https://github.com/chimay/wheel","last_synced_at":"2025-04-09T16:31:45.419Z","repository":{"id":153607598,"uuid":"175219507","full_name":"chimay/wheel","owner":"chimay","description":"Any line in any file is only a few keys away. Quick navigation for Vim and Neovim : file groups, buffers, find, grep/edit, mru, frecency, sessions, yank, ...","archived":false,"fork":false,"pushed_at":"2024-06-28T10:13:35.000Z","size":8302,"stargazers_count":146,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-11-06T19:41:28.552Z","etag":null,"topics":["find","frecency","grep","group","history","navigation","neovim","refactor","search","session","tabs-wins","vim","yankring"],"latest_commit_sha":null,"homepage":"","language":"Vim Script","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chimay.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-12T13:41:44.000Z","updated_at":"2024-10-12T18:00:28.000Z","dependencies_parsed_at":"2023-12-23T20:29:06.621Z","dependency_job_id":"dd252ab9-a2a3-4d80-a5ee-f5868768c3df","html_url":"https://github.com/chimay/wheel","commit_stats":null,"previous_names":[],"tags_count":79,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chimay%2Fwheel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chimay%2Fwheel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chimay%2Fwheel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chimay%2Fwheel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chimay","download_url":"https://codeload.github.com/chimay/wheel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248067780,"owners_count":21042356,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["find","frecency","grep","group","history","navigation","neovim","refactor","search","session","tabs-wins","vim","yankring"],"created_at":"2024-08-01T16:02:11.126Z","updated_at":"2025-04-09T16:31:40.402Z","avatar_url":"https://github.com/chimay.png","language":"Vim Script","readme":"\u003c!-- vim: set filetype=markdown: --\u003e\n\n\u003c!-- vim-markdown-toc GFM --\u003e\n\n* [Introduction](#introduction)\n  * [What is it ?](#what-is-it-)\n  * [What does it look like ?](#what-does-it-look-like-)\n    * [History and meta-command](#history-and-meta-command)\n    * [Frecency, dedicated buffers and layers](#frecency-dedicated-buffers-and-layers)\n    * [More screenshots \u0026 screencasts](#more-screenshots--screencasts)\n  * [File groups \u0026 categories](#file-groups--categories)\n    * [Why do you need three levels of grouping ?](#why-do-you-need-three-levels-of-grouping-)\n    * [A wheel that follows you](#a-wheel-that-follows-you)\n  * [Features](#features)\n  * [History](#history)\n  * [Prerequisites](#prerequisites)\n    * [Software](#software)\n    * [Operating system](#operating-system)\n* [Installation](#installation)\n  * [Using vim-packager](#using-vim-packager)\n  * [Using minpac](#using-minpac)\n  * [Using vim-plug](#using-vim-plug)\n  * [Cloning the repo in a pack-start directory](#cloning-the-repo-in-a-pack-start-directory)\n* [Documentation](#documentation)\n  * [Vim help](#vim-help)\n  * [Wiki](#wiki)\n  * [In wheel menu](#in-wheel-menu)\n* [Configuration](#configuration)\n  * [Wiki](#wiki-1)\n  * [Example](#example)\n* [Meta-command](#meta-command)\n* [Bindings](#bindings)\n  * [Frequently used functions](#frequently-used-functions)\n* [Examples](#examples)\n  * [Display matching files in splits](#display-matching-files-in-splits)\n  * [More](#more)\n* [Warning](#warning)\n\n\u003c!-- vim-markdown-toc --\u003e\n\n# Introduction\n## What is it ?\n\nWheel is a :\n\n- file group manager\n- session manager (tabs \u0026 windows)\n- navigation plugin\n- refactoring tool\n\nfor Vim and Neovim.\n\nOur favorite editor has already plenty of nice navigation functions. Wheel\nenhances their interface by using :\n\n- intuitive completion with multi-pattern support for prompting functions\n- dedicated buffers, in which you can filter and select elements, besides using\n  the full power of your editor\n- a meta-command with subcommands, actions and completion\n- edit modes, that allow you to reflect your changes in a dedicated buffer to\n  the original file(s)\n\nWith these tools, any line in any file is only a few keys away.\n\nAll is written in lightweight, classical Vimscript. No dependency\nrequired.\n\n## What does it look like ?\n\n### History and meta-command\n\n![History \u0026 :Wheel command completion](https://github.com/chimay/wheel-multimedia/blob/main/screenshot/history-meta-command.jpg)\n\n### Frecency, dedicated buffers and layers\n\n![Frecency, dedicated buffers and layers](https://github.com/chimay/wheel-multimedia/blob/main/screenshot/mandalas-and-leaves.jpg)\n\n### More screenshots \u0026 screencasts\n\nSee the [wheel-multimedia repository](https://github.com/chimay/wheel-multimedia).\n\n## File groups \u0026 categories\n\nWheel let you organize your files by creating as many file groups as\nyou need, add the files you want to it and quickly navigate between :\n\n- files of the same group\n- file groups\n\nNote that :\n\n- a location contains a name, a filename, as well as a line \u0026 column number\n- a file group, in fact a location group, is called a circle\n- a set of file groups, or a category, is called a torus (a circle of circles)\n- the list of toruses is called the wheel\n\nCurrently, there are more than a thousand files in my groups, and it runs like a breeze.\n\n### Why do you need three levels of grouping ?\n\nAt first glance, managing groups with circles in a torus seems to be\nsufficient. But with time, the torus grows big, and a third level helps\nyou to organize your files by groups and categories:\n\n- the wheel contains all the toruses\n- each torus contains a category of files, e.g.:\n  + configuration, development, publication\n- each circle contains a project, e.g.:\n  + kitty or vifm circles in configuration torus\n  + shell or vimscript in development torus\n  + tea or art in publication torus\n\nYou can also organize a torus in subprojects. For instance, in the wheel\ntorus, I have the following groups :\n\n  - plugin/ dir files\n  - autoload/ dir files\n  - doc files\n  - wiki files\n  - test files\n\n### A wheel that follows you\n\nWheel is designed to follow your workflow : you only add the files\nyou want, where you want. For instance, if you have a `organize` group\nwith agenda \u0026 todo files, you can quickly alternate them, or display\nthem in two windows. Then, if you suddenly got an idea to tune vim,\nyou switch to the `vim` group with your favorites configuration files in\nit. Same process, to cycle, alternate or display the files. Over time,\nyour groups will grow and adapt to your style.\n\n## Features\n\nThe group manager is the core, but it goes far beyond that : you need a\nquick navigation framework to travel in the wheel, and once it is there,\nit’s easy to add new functionalities.\n\n- add\n  + files from anywhere in the filesystem\n  + a file in more than one group\n  + file:line-1 and file:line-2 in the same group\n- may be saved in wheel file (recommended)\n- on demand loading of files\n  + no slowdown of (neo)vim start\n- easy navigation\n  + switch to matching tab \u0026 window if available\n  + next / previous location, circle or torus\n  + single or multi-pattern completion in prompting functions\n  + choose file, group or category in dedicated buffer\n    - filter candidates\n    - selection tools\n    - preview\n    - folds matching wheel tree structure\n    - context menus\n  + auto `:lcd` to project root of current file\n  + history of wheel files\n    - anywhere\n    - in same group\n    - in same category\n  + signs displayed at wheel locations\n- search files\n  + using locate\n  + using find\n  + MRU files not found in wheel\n  + opened buffers\n  + visible buffers in tabs \u0026 windows\n- search inside files\n  + grep on group files\n    - navigate\n    - edit mode : edit and propagate changes by writing the dedicated buffer\n  + outline\n    - folds headers in group files (based on fold markers)\n    - markdown headers\n    - org mode headers\n  + tags\n  + markers\n  + jumps \u0026 changes lists\n- narrow\n  + current file\n  + all circle file with a pattern\n- yank ring using TextYankPost event\n  + paste before or after, linewise or characterwise\n  + switch register ring\n- reorganizing\n  + wheel elements\n  + tabs \u0026 windows\n- undo list\n  + diff between last \u0026 chosen state\n- command output in buffer\n  + :ex or !shell command\n  + async shell command\n  + result can be filtered, as usual\n- dedicated buffers ring to save your searches\n  + layer ring in each dedicated buffer\n- batch operations\n- autogroup files by extension or directory\n- save tabs \u0026 windows in minimal session file\n- display files\n  + split levels : torus, circle, location\n  + split\n    - vertical, golden vertical\n    - horizontal, golden horizontal\n    - main left, golden left\n    - main top, golden top\n    - grid\n  + mix of above\n    - circles on tabs, locations on split\n    - toruses on tabs, circles on split\n\n## History\n\nThis project is inspired by :\n\n- [torus](https://github.com/chimay/torus), a file group plugin for Emacs,\n  itself inspired by [MTorus](https://www.emacswiki.org/emacs/MTorus)\n\n- [ctrlspace](https://github.com/vim-ctrlspace/vim-ctrlspace), a workspace\n  plugin for Vim\n\n- [unite](https://github.com/Shougo/unite.vim), a search plugin for arbitrary sources\n\n- [quickfix-reflector](https://github.com/stefandtw/quickfix-reflector.vim),\n  for the grep edit mode\n\n- [NrrwRgn](https://github.com/chrisbra/NrrwRgn), for the narrow dedicated buffers\n\n- [YankRing](https://github.com/vim-scripts/YankRing.vim), whose name is\n  self-explanatory\n\n## Prerequisites\n\n### Software\n\n- vim \u003e= 8.2\n- neovim \u003e= 0.6\n\nBasically, it assumes the existence of `:map-cmd` and `#{...}` syntax\nfor dictionaries.\n\nIf your distribution uses an older version, you can resort to appimages :\n\n- [vim appimage](https://github.com/vim/vim-appimage)\n- [neovim appimage](https://appimage.github.io/neovim/)\n\nThese are fast evolving pieces of software, it's worth upgrading anyway.\n\n### Operating system\n\nSome outer rim functions assume a Unix-like OS, like Linux or BSD :\n\n- async functions\n- external commands, like locate\n- mirror the wheel structure in a filesystem tree\n\nMost of the plugin should work out of the box on other OSes, however. If\nyou encounter some problem, please let me know.\n\n# Installation\n## Using vim-packager\n\nSimply add this line after `packager#init()` to your initialisation file :\n\n~~~vim\ncall packager#add('chimay/wheel', { 'type' : 'start' })\n~~~\n\nand run `:PackagerInstall` (see the\n[vim-packager readme](https://github.com/kristijanhusak/vim-packager)).\n\n## Using minpac\n\nSimply add this line after `minpac#init()` to your initialisation file :\n\n~~~vim\ncall minpac#add('chimay/wheel', { 'type' : 'start' })\n~~~\n\nand run `:PackUpdate` (see the\n[minpac readme](https://github.com/k-takata/minpac)).\n\n## Using vim-plug\n\nThe syntax should be similar with other git oriented plugin managers :\n\n~~~vim\nPlug 'chimay/wheel'\n~~~\n\nand run `:PlugInstall` to install.\n\n## Cloning the repo in a pack-start directory\n\nYou can clone the repository somewhere in your `runtime-search-path`. You\ncan get a minimal version by asking a shallow clone (depth 1) and\nfiltering out the screenshots blobs :\n\n```vim\nmkdir -p ~/.local/share/nvim/site/pack/foo/start\ncd ~/.local/share/nvim/site/pack/foo/start\ngit clone --depth 1 --filter=blob:none https://github.com/chimay/wheel\n```\n\nIf you install or update with git, don't forget to run :\n\n```vim\n:helptags doc\n```\n\nto be able to use the inline help.\n\n# Documentation\n## Vim help\n\n[Your guide](https://github.com/chimay/wheel/blob/master/doc/wheel.txt)\non the wheel tracks :\n\n~~~vim\n:help wheel.txt\n~~~\n\n## Wiki\n\nA [wheel wiki](https://github.com/chimay/wheel/wiki) is also available.\n\nIt is recommended to read at least the\n[step-by-step](https://github.com/chimay/wheel/wiki/step-by-step)\nand [workflow](https://github.com/chimay/wheel/wiki/workflow)\npages, either in the wiki or in the `wheel.txt` file.\n\n## In wheel menu\n\nIn the help submenu of the main menu (default map : `\u003cM-w\u003e\u003cM-m\u003e`), you have\naccess to :\n\n- the inline help (wheel.txt)\n- the list of current wheel mappings\n- the list of available plug mappings\n- the list of :Wheel subcommands and actions\n- the list of autocommands of your wheel group\n- a dedicated buffer basic help\n- local buffer maps\n\n# Configuration\n## Wiki\n\nFor a thorough list of options, see the\n[configuration](https://github.com/chimay/wheel/wiki/configuration)\nand\n[autocommands](https://github.com/chimay/wheel/wiki/autocommands)\npages in the wiki.\n\n## Example\n\nHere is an example of configuration :\n\n~~~vim\nif ! exists(\"g:wheel_loaded\")\n  \" ---- DONT FORGET TO INITIALIZE DICTS BEFORE USING THEM\n  let g:wheel_config                 = {}\n  let g:wheel_config.project         = {}\n  let g:wheel_config.storage         = {}\n  let g:wheel_config.storage.wheel   = {}\n  let g:wheel_config.storage.session = {}\n  let g:wheel_config.maxim           = {}\n  let g:wheel_config.completion      = {}\n  let g:wheel_config.frecency        = {}\n  let g:wheel_config.display         = {}\n  let g:wheel_config.display.sign    = {}\n\n  \" ---- The bigger it is, the more mappings available\n  let g:wheel_config.mappings = 10\n  \" ---- Prefix for mappings\n  let g:wheel_config.prefix = '\u003cM-w\u003e'\n  \" ---- Locate database ; default one if left empty\n  let g:wheel_config.locate_db = '~/index/locate/home.db'\n  \" ---- Grep command : :grep or :vimpgrep\n  let g:wheel_config.grep = 'grep'\n\n  \" Marker of project root\n  \"let g:wheel_config.project.markers = '.git'\n  \"let g:wheel_config.project.markers = '.project-root'\n  \" List of markers\n  \" The project dir is found as soon as one marker is found in it\n  let g:wheel_config.project.markers = ['.hg' , '.git', '.project-root']\n  \" Auto cd to project root if \u003e 0\n  let g:wheel_config.project.auto_chdir = 1\n\n  \" The folder where toruses and circles will be stored and read\n  let g:wheel_config.storage.wheel.folder = '~/.local/share/wheel'\n  \" Name of the default wheel file\n  let g:wheel_config.storage.wheel.name = 'wheel.vim'\n  \" Auto read wheel file on startup if \u003e 0\n  let g:wheel_config.storage.wheel.autoread = 1\n  \" Auto write wheel file on exit if \u003e 0\n  let g:wheel_config.storage.wheel.autowrite = 1\n  \" The folder where sessions will be stored and read\n  let g:wheel_config.storage.session.folder = '~/.local/share/wheel/session'\n  \" Name of the default session file\n  let g:wheel_config.storage.session.name = 'session.vim'\n  \" Auto read default session file on startup if \u003e 0\n  let g:wheel_config.storage.session.autoread = 1\n  \" Auto write default session file on exit if \u003e 0\n  let g:wheel_config.storage.session.autowrite = 1\n  \" Number of backups for wheel \u0026 session files\n  let g:wheel_config.storage.backups = 5\n\n  \" ---- Maximum number of elements in history\n  let g:wheel_config.maxim.history = 400\n  \" ---- Maximum number of elements in input history\n  let g:wheel_config.maxim.input = 200\n\n  \" ---- Maximum number of elements in mru\n  let g:wheel_config.maxim.mru = 300\n\n  \" ---- Maximum number of elements in yank ring\n  let g:wheel_config.maxim.default_yanks = 700\n  let g:wheel_config.maxim.other_yanks = 100\n  \" ---- Maximum lines of yank to add in yank ring\n  let g:wheel_config.maxim.yank_lines = 30\n  \" ---- Maximum size of yank to add in yank ring\n  let g:wheel_config.maxim.yank_size = 3000\n\n  \" ---- Maximum size of layer ring\n  let g:wheel_config.maxim.layers = 10\n\n  \" ---- Maximum number of tabs in layouts\n  let g:wheel_config.maxim.tabs = 12\n  \" ---- Maximum number of horizontal splits\n  let g:wheel_config.maxim.horizontal = 3\n  \" ---- Maximum number of vertical splits\n  let g:wheel_config.maxim.vertical = 4\n\n  \" ---- Completion\n  let g:wheel_config.completion.vocalize = 1\n  let g:wheel_config.completion.wordize = 1\n  let g:wheel_config.completion.fuzzy = 0\n  let g:wheel_config.completion.scores = 1\n\n  \" ---- Frecency\n  let g:wheel_config.frecency.reward = 120\n  let g:wheel_config.frecency.penalty = 1\n\n  \" ---- Mandala \u0026 leaf status in statusline ?\n  let g:wheel_config.display.statusline = 1\n  \" ---- Wheel dedibuf message : one-line or multi-line\n  let g:wheel_config.display.dedibuf_msg = 'one-line'\n  \" ---- Filter prompt in dedicated buffers\n  \"let g:wheel_config.display.prompt = 'wheel $ '\n  \"let g:wheel_config.display.prompt_writable = 'wheel # '\n  \" ---- Selection marker in dedicated buffers\n  \"let g:wheel_config.display.selection = '-\u003e '\n  \" ---- Signs\n  let g:wheel_config.display.sign.switch = 1\n  \" ---- Signs at wheel locations\n  \"let g:wheel_config.display.sign.settings = { 'text' : '@' }\n  \" ---- Signs after using Wheel interface to native navigation (buffer, marker, jump, change, tag, ...)\n  \"let g:wheel_config.display.sign.native_settings = { 'text' : '*' }\n\n  let g:wheel_config.debug = 0\nendif\n\naugroup wheel\n  \" Clear the group\n  autocmd!\n  \" On vim enter, for autoreading\n  autocmd VimEnter * call wheel#void#init()\n  \" On vim leave, for autowriting\n  autocmd VimLeave * call wheel#void#exit()\n  \" Update location line \u0026 col before leaving a window\n  autocmd BufLeave * call wheel#vortex#update()\n  \" For the generalized alternate window command, for all windows in all tabs\n  autocmd BufLeave * call wheel#caduceus#update_window()\n  \" Executed before jumping to a location\n  autocmd User WheelBeforeJump call wheel#vortex#update()\n  \" Executed before organizing the wheel\n  autocmd User WheelBeforeOrganize call wheel#vortex#update()\n  \" Executed before writing the wheel\n  autocmd User WheelBeforeWrite call wheel#vortex#update()\n  \" Executed after jumping to a location\n  \"autocmd User WheelAfterJump norm zMzx\n  \" For current wheel location to auto follow window changes\n  autocmd WinEnter * call wheel#projection#follow()\n  \" For current wheel location to follow on editing, buffer loading\n  \"autocmd BufRead * call wheel#projection#follow()\n  \" For current wheel location to follow on entering buffer\n  \"autocmd BufEnter * call wheel#projection#follow()\n  \" Executed after using Wheel interface to a native jump (buffer, marker, jump, change, tag, ...)\n  \"autocmd User WheelAfterNative call wheel#projection#follow()\n  \" Add current non-wheel file to MRU files\n  autocmd BufRead * call wheel#attic#record()\n  \" To record your yanks in the yank ring\n  autocmd TextYankPost * call wheel#codex#add()\naugroup END\n~~~\n\n# Meta-command\n\nThe `:Wheel` meta-command gives you access to almost all the plugin\nfeatures :\n\n```vim\n:Wheel subcommand\n```\n\nCompletion is available for subcommands. For further details,\nsee the\n[meta-command wiki page](https://github.com/chimay/wheel/wiki/command).\n\nI suggest you map it to a convenient key. Example :\n\n```vim\nnnoremap \u003cspace\u003ew :Wheel\u003cspace\u003e\n```\n\n# Bindings\n\nFor a thorough discussion on bindings, see\n[the bindings page](https://github.com/chimay/wheel/wiki/bindings)\nin the wiki.\n\n## Frequently used functions\n\nBelow are some bindings that you may find useful. They are included in\nthe level 10 mappings :\n\n~~~vim\nlet nmap = 'nmap \u003csilent\u003e'\nlet vmap = 'vmap \u003csilent\u003e'\n\" Menus\nexe nmap '\u003cm-m\u003e          \u003cplug\u003e(wheel-menu-main)'\nexe nmap '\u003cm-=\u003e          \u003cplug\u003e(wheel-menu-meta)'\n\" Sync\nexe nmap '\u003cm-i\u003e          \u003cplug\u003e(wheel-info)'\nexe nmap '\u003cm-$\u003e          \u003cplug\u003e(wheel-sync-up)'\nexe nmap '\u003cc-$\u003e          \u003cplug\u003e(wheel-sync-down)'\n\" ---- navigate in the wheel\n\" --  next / previous\nexe nmap '\u003cm-pageup\u003e   \u003cplug\u003e(wheel-previous-location)'\nexe nmap '\u003cm-pagedown\u003e \u003cplug\u003e(wheel-next-location)'\nexe nmap '\u003cc-pageup\u003e   \u003cplug\u003e(wheel-previous-circle)'\nexe nmap '\u003cc-pagedown\u003e \u003cplug\u003e(wheel-next-circle)'\nexe nmap '\u003cs-pageup\u003e   \u003cplug\u003e(wheel-previous-torus)'\nexe nmap '\u003cs-pagedown\u003e \u003cplug\u003e(wheel-next-torus)'\n\" -- switch\nexe nmap '\u003cm-cr\u003e        \u003cplug\u003e(wheel-prompt-location)'\nexe nmap '\u003cc-cr\u003e        \u003cplug\u003e(wheel-prompt-circle)'\nexe nmap '\u003cs-cr\u003e        \u003cplug\u003e(wheel-prompt-torus)'\nexe nmap '\u003cm-space\u003e     \u003cplug\u003e(wheel-dedibuf-location)'\nexe nmap '\u003cc-space\u003e     \u003cplug\u003e(wheel-dedibuf-circle)'\nexe nmap '\u003cs-space\u003e     \u003cplug\u003e(wheel-dedibuf-torus)'\n\" -- index\nexe nmap '\u003cm-x\u003e         \u003cplug\u003e(wheel-prompt-index)'\nexe nmap '\u003cm-s-x\u003e       \u003cplug\u003e(wheel-dedibuf-index)'\nexe nmap '\u003cm-c-x\u003e       \u003cplug\u003e(wheel-dedibuf-index-tree)'\n\" -- history\nexe nmap '\u003cm-home\u003e      \u003cplug\u003e(wheel-history-newer)'\nexe nmap '\u003cm-end\u003e       \u003cplug\u003e(wheel-history-older)'\nexe nmap '\u003cc-home\u003e      \u003cplug\u003e(wheel-history-newer-in-circle)'\nexe nmap '\u003cc-end\u003e       \u003cplug\u003e(wheel-history-older-in-circle)'\nexe nmap '\u003cs-home\u003e      \u003cplug\u003e(wheel-history-newer-in-torus)'\nexe nmap '\u003cs-end\u003e       \u003cplug\u003e(wheel-history-older-in-torus)'\nexe nmap '\u003cm-h\u003e         \u003cplug\u003e(wheel-prompt-history)'\nexe nmap '\u003cm-c-h\u003e       \u003cplug\u003e(wheel-dedibuf-history)'\n\" -- alternate\nexe nmap '\u003cc-^\u003e          \u003cplug\u003e(wheel-alternate-anywhere)'\nexe nmap '\u003cm-^\u003e          \u003cplug\u003e(wheel-alternate-same-circle)'\nexe nmap '\u003cm-c-^\u003e        \u003cplug\u003e(wheel-alternate-same-torus-other-circle)'\n\" ---- navigate using Wheel interface to vim native tools\n\" -- buffers\nexe nmap '\u003cm-b\u003e          \u003cplug\u003e(wheel-prompt-buffer)'\nexe nmap '\u003cm-c-b\u003e        \u003cplug\u003e(wheel-dedibuf-buffer)'\nexe nmap '\u003cm-s-b\u003e        \u003cplug\u003e(wheel-dedibuf-buffer-all)'\n\" -- tabs \u0026 windows : visible buffers\nexe nmap '\u003cm-v\u003e          \u003cplug\u003e(wheel-prompt-tabwin)'\nexe nmap '\u003cm-c-v\u003e        \u003cplug\u003e(wheel-dedibuf-tabwin-tree)'\nexe nmap '\u003cm-s-v\u003e        \u003cplug\u003e(wheel-dedibuf-tabwin)'\n\" -- (neo)vim lists\nexe nmap \"\u003cm-'\u003e          \u003cplug\u003e(wheel-prompt-marker)\"\nexe nmap \"\u003cm-k\u003e          \u003cplug\u003e(wheel-prompt-marker)\"\nexe nmap '\u003cm-j\u003e          \u003cplug\u003e(wheel-prompt-jump)'\nexe nmap '\u003cm-,\u003e          \u003cplug\u003e(wheel-prompt-change)'\nexe nmap '\u003cm-c\u003e          \u003cplug\u003e(wheel-prompt-change)'\nexe nmap '\u003cm-t\u003e          \u003cplug\u003e(wheel-prompt-tag)'\nexe nmap \"\u003cm-c-k\u003e        \u003cplug\u003e(wheel-dedibuf-markers)\"\nexe nmap '\u003cm-c-j\u003e        \u003cplug\u003e(wheel-dedibuf-jumps)'\nexe nmap '\u003cm-;\u003e          \u003cplug\u003e(wheel-dedibuf-changes)'\nexe nmap '\u003cm-c-t\u003e        \u003cplug\u003e(wheel-dedibuf-tags)'\n\" ---- organize the wheel\nexe nmap '\u003cm-insert\u003e     \u003cplug\u003e(wheel-prompt-add-here)'\nexe nmap '\u003cm-del\u003e        \u003cplug\u003e(wheel-prompt-delete-location)'\nexe nmap '\u003cm-r\u003e          \u003cplug\u003e(wheel-dedibuf-reorganize)'\n\" ---- organize other things\nexe nmap '\u003cm-c-r\u003e        \u003cplug\u003e(wheel-dedibuf-reorg-tabwin)'\n\" ---- refactoring\nexe nmap '\u003cm-c-g\u003e        \u003cplug\u003e(wheel-dedibuf-grep-edit)'\nexe nmap '\u003cm-n\u003e          \u003cplug\u003e(wheel-dedibuf-narrow-operator)'\nexe vmap '\u003cm-n\u003e          \u003cplug\u003e(wheel-dedibuf-narrow)'\nexe nmap '\u003cm-c-n\u003e        \u003cplug\u003e(wheel-dedibuf-narrow-circle)'\n\" ---- search\n\" -- files\nexe nmap '\u003cm-f\u003e          \u003cplug\u003e(wheel-prompt-find)'\nexe nmap '\u003cm-c-f\u003e        \u003cplug\u003e(wheel-dedibuf-find)'\nexe nmap '\u003cm-c-\u0026\u003e        \u003cplug\u003e(wheel-dedibuf-async-find)'\nexe nmap '\u003cm-u\u003e          \u003cplug\u003e(wheel-prompt-mru)'\nexe nmap '\u003cm-c-u\u003e        \u003cplug\u003e(wheel-dedibuf-mru)'\nexe nmap '\u003cm-l\u003e          \u003cplug\u003e(wheel-dedibuf-locate)'\n\" -- inside files\nexe nmap '\u003cm-o\u003e          \u003cplug\u003e(wheel-prompt-occur)'\nexe nmap '\u003cm-c-o\u003e        \u003cplug\u003e(wheel-dedibuf-occur)'\nexe nmap '\u003cm-g\u003e          \u003cplug\u003e(wheel-dedibuf-grep)'\nexe nmap '\u003cm-s-o\u003e        \u003cplug\u003e(wheel-prompt-outline)'\nexe nmap '\u003cc-s-o\u003e        \u003cplug\u003e(wheel-dedibuf-outline)'\n\" ---- yank ring\nexe nmap '\u003cm-y\u003e          \u003cplug\u003e(wheel-prompt-yank-plain-linewise-after)'\nexe nmap '\u003cm-p\u003e          \u003cplug\u003e(wheel-prompt-yank-plain-charwise-after)'\nexe nmap '\u003cm-s-y\u003e        \u003cplug\u003e(wheel-prompt-yank-plain-linewise-before)'\nexe nmap '\u003cm-s-p\u003e        \u003cplug\u003e(wheel-prompt-yank-plain-charwise-before)'\nexe nmap '\u003cm-c-y\u003e        \u003cplug\u003e(wheel-dedibuf-yank-plain)'\nexe nmap '\u003cm-c-p\u003e        \u003cplug\u003e(wheel-dedibuf-yank-list)'\n\" ---- undo list\nexe nmap '\u003cm-s-u\u003e        \u003cplug\u003e(wheel-dedibuf-undo-list)'\n\" ---- ex or shell command output\nexe nmap '\u003cm-!\u003e          \u003cplug\u003e(wheel-dedibuf-command)'\nexe nmap '\u003cm-\u0026\u003e          \u003cplug\u003e(wheel-dedibuf-async)'\n\" ---- dedicated buffers\nexe nmap '\u003cm-tab\u003e        \u003cplug\u003e(wheel-mandala-add)'\nexe nmap '\u003cm-backspace\u003e  \u003cplug\u003e(wheel-mandala-delete)'\nexe nmap '\u003cm-left\u003e       \u003cplug\u003e(wheel-mandala-backward)'\nexe nmap '\u003cm-right\u003e      \u003cplug\u003e(wheel-mandala-forward)'\nexe nmap '\u003cc-up\u003e         \u003cplug\u003e(wheel-mandala-switch)'\n\" ---- layouts\nexe nmap '\u003cm-z\u003e          \u003cplug\u003e(wheel-zoom)'\n~~~\n\n# Examples\n## Display matching files in splits\n\n- `\u003cM-w\u003e\u003cspace\u003e` to launch the location navigator\n- `i` to go to insert mode\n- enter the pattern you want\n  + e.g. `\\.vim$` if all your vim locations end with `.vim`\n- `\u003center\u003e` to validate the pattern\n- `*` to select all the visible (filtered) locations\n- `v` to open all selected locations in vertical splits\n\n## More\n\nMore examples are available in the\n[wiki examples page](https://github.com/chimay/wheel/wiki/examples).\n\n# Warning\n\nDespite abundant testing, some bugs might remain, so be careful.\n\n","funding_links":[],"categories":["Vim Script"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchimay%2Fwheel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchimay%2Fwheel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchimay%2Fwheel/lists"}