{"id":21130654,"url":"https://github.com/brglng/vim-sidebar-manager","last_synced_at":"2025-07-09T01:33:33.973Z","repository":{"id":84205021,"uuid":"240724489","full_name":"brglng/vim-sidebar-manager","owner":"brglng","description":"The missing sidebar manager for Vim/Neovim","archived":false,"fork":false,"pushed_at":"2025-01-14T08:00:44.000Z","size":40,"stargazers_count":37,"open_issues_count":1,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-04T14:37:42.809Z","etag":null,"topics":["neovim","plugin","sidebar","vim"],"latest_commit_sha":null,"homepage":"","language":"Vim Script","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brglng.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2020-02-15T14:15:09.000Z","updated_at":"2025-01-17T17:05:01.000Z","dependencies_parsed_at":"2024-05-13T22:06:38.458Z","dependency_job_id":null,"html_url":"https://github.com/brglng/vim-sidebar-manager","commit_stats":null,"previous_names":["brglng/vim-sidebar-manager"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/brglng/vim-sidebar-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brglng%2Fvim-sidebar-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brglng%2Fvim-sidebar-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brglng%2Fvim-sidebar-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brglng%2Fvim-sidebar-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brglng","download_url":"https://codeload.github.com/brglng/vim-sidebar-manager/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brglng%2Fvim-sidebar-manager/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264375583,"owners_count":23598408,"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":["neovim","plugin","sidebar","vim"],"created_at":"2024-11-20T05:36:13.452Z","updated_at":"2025-07-09T01:33:33.959Z","avatar_url":"https://github.com/brglng.png","language":"Vim Script","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vim-sidebar-manager\n\nA sidebar manger for Vim/Neovim to mimic an IDE-like UI layout.\n\n## TL;DR\n\n![Screencast](https://github.com/brglng/images/raw/master/vim-sidebar-manager/screencast.webp)\n\n## Motivation\n\nWe have a lot of plugins who open windows at your editor's side. I would call\nthem \"sidebars\". Unfortunately, those plugins do no cooperate with each other.\nFor example, if you have NERDTree and Tagbar installed, and configured to open\nat the same side, they can open simultaneously, and you have to control each\nof them individually. I think a better approach would be to \"switch\" them.\nThat is, when you switch to NERDTree, Tagbar is closed automatically, and when\nyou switch to Tagbar, NERDTree is closed automatically. As a result, it gives\nyou a feeling that there is always a bar at a side, where there are several\npages that can be switched back and forth. That's pretty much like a typical\nUI layout of an IDE.  What's more, I want to use the same key for switching\nand toggling. I wrote a lot of code to implement this behavior in the past\nyears, and finally noticed that an abstraction layer can be made, and that's\nthis plugin.\n\n## Example\n\nHere's an example of configuration for NERDTree, Tagbar and Undotree at the\nleft side.\n\n```vim\nlet g:sidebars = {}\n\nlet g:NERDTreeWinPos = 'left'\nlet g:NERDTreeWinSize = 40\nlet g:NERDTreeQuitOnOpen = 0\n\nlet g:sidebars.nerdtree = {\n\\   'position': 'left',\n\\   'filter': {nr -\u003e getwinvar(nr, '\u0026filetype') ==# 'nerdtree'},\n\\   'open': 'NERDTree',\n\\   'close': 'NERDTreeClose',\n\\   'width': 40\n\\ }\n\nlet g:tagbar_left = 1\nlet g:tagbar_width = 40\nlet g:tagbar_autoclose = 0\nlet g:tagbar_autofocus = 1\n\nlet g:sidebars.tagbar = {\n\\   'position': 'left',\n\\   'filter': {nr -\u003e bufname(winbufnr(nr)) =~ '__Tagbar__'},\n\\   'open': 'TagbarOpen',\n\\   'close': 'TagbarClose'\n\\ }\n\nlet g:undotree_SetFocusWhenToggle = 1\nlet g:undotree_SplitWidth = 40\n\nlet g:sidebars.undotree = {\n\\   'position': 'left',\n\\   'filter': {nr -\u003e getwinvar(nr, '\u0026filetype') ==# 'undotree'},\n\\   'open': 'UndotreeShow',\n\\   'close': 'UndotreeHide'\n\\ }\n\nnoremap \u003csilent\u003e \u003cM-1\u003e :call sidebar#toggle('nerdtree')\u003cCR\u003e\nnoremap \u003csilent\u003e \u003cM-2\u003e :call sidebar#toggle('tagbar')\u003cCR\u003e\nnoremap \u003csilent\u003e \u003cM-3\u003e :call sidebar#toggle('undotree')\u003cCR\u003e\n```\n\nNotes:\n\n- `vim-sidebar-manager` moves the configured windows to the specified side,\n  and adjusts their sizes correspondingly. However sometimes it may not work\n  propoerly. In that case, you may need to adjust the settings of the plugins.\n\n- The `filter` field must be a Funcref who takes the `winnr` as an argument\n  and returns a boolean (number) to indicate whether or not the window\n  corresponding to this `nr` is the specific kind of sidebar window .\n\n- The `open` and `close` fields can be either a string of command or a\n  Funcref. If `close` is ommited, `wincmd q` is used as the default.\n\nFor more examples, please refer to the [Wiki page](https://github.com/brglng/vim-sidebar-manager/wiki/Examples)\n\n\u003c!-- vim: ts=8 sts=4 sw=4 et cc=79\n--\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrglng%2Fvim-sidebar-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrglng%2Fvim-sidebar-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrglng%2Fvim-sidebar-manager/lists"}