{"id":13545757,"url":"https://github.com/mihaifm/vimpanel","last_synced_at":"2025-03-05T20:12:56.725Z","repository":{"id":6493065,"uuid":"7733467","full_name":"mihaifm/vimpanel","owner":"mihaifm","description":"A modern side panel for Vim","archived":false,"fork":false,"pushed_at":"2024-09-02T18:43:16.000Z","size":386,"stargazers_count":108,"open_issues_count":4,"forks_count":9,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-26T19:13:32.208Z","etag":null,"topics":["vim","vim-plugin","vim-plugins","vim-script"],"latest_commit_sha":null,"homepage":null,"language":"Vim Script","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mihaifm.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-01-21T14:16:30.000Z","updated_at":"2025-02-16T20:02:23.000Z","dependencies_parsed_at":"2022-09-13T18:20:36.460Z","dependency_job_id":null,"html_url":"https://github.com/mihaifm/vimpanel","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mihaifm%2Fvimpanel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mihaifm%2Fvimpanel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mihaifm%2Fvimpanel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mihaifm%2Fvimpanel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mihaifm","download_url":"https://codeload.github.com/mihaifm/vimpanel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242097392,"owners_count":20071251,"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":["vim","vim-plugin","vim-plugins","vim-script"],"created_at":"2024-08-01T11:01:14.904Z","updated_at":"2025-03-05T20:12:56.701Z","avatar_url":"https://github.com/mihaifm.png","language":"Vim Script","funding_links":[],"categories":["Vim Script"],"sub_categories":[],"readme":"## Vimpanel\n\n* Add any folder to the panel\n* Each folder can be expanded independently\n* You can stick files in there as well\n* Drag and drop works too\n* Create and display any number of panels\n* Session support: find your panels and all other windows the way you left them when you exited Vim\n* Filesystem operations, including file copying using visual selection\n* Proper handling of Windows paths\n* Explore the filesystem without constrains, in explorer mode\n* Use it for project management, keeping bookmarks, notes or anything you like\n\nVimpanel builds upon [NERDTree](https://github.com/scrooloose/nerdtree), in an attempt to make the side panel\na place where you can keep your stuff organized, rather than just a file system explorer.\n\n![screenshot](http://i.imgur.com/e6dIvrX.png)\n\n### Getting started\n\nBegin by creating a new panel with the `:VimpanelCreate` command.\n\n    :VimpanelCreate myprojects\n  \nLoad this panel in the current window with `:VimpanelLoad`\n\n    :VimpanelLoad myprojects\n  \nAdd entries to the panel with the `:Vimpanel` command.\n\n    :Vimpanel D:\\apps\\myapp\n  \nThe path you just added will act as a root and you can now expand and browse it. At any time you can add \nother roots to the panel.\n\nTo get rid of a root, select it and use the `:VimpanelRemove` command. This does not delete anything from\nthe filesystem, it just takes it off the panel.\n\nSort your panel entries by editing the Vimpanel storage file. The format of this file is painfully simple:\neach line is an entry to the panel. There is a `:VimpanelEdit` command that makes this easier, by opening up \nthat file:\n\n    :VimpanelEdit mypanel\n    \nYou will need to refresh the panel after this, with the `:VimpanelRefresh` command or the `\u003cF5\u003e` key. \n  \nInside the panel, focus on a single directory by entering explorer mode:\n\n    x\n    \nIn this mode, you can also move up a dir by using the `u` key, or change the root by using the `c` key.\nExit explorer mode at any time by pressing `x` again.\n\nInside the panel, several actions and filesystem operations are available.\nCheck the [full list](https://github.com/mihaifm/vimpanel#mappings-inside-the-panel) below.\n\nWhen you're done working, save the state of you panel and everything else you have on the screen:\n\n    :VimpanelSessionMake\n    \nThis uses Vim's `mksession` command and some extra magic to save the state of your panels (the state \nis defined by which dirs are expanded and which are closed). You can optionally pass in a session name\nto the command, if you want to keep multiple sessions with different names.\n\nWhen you're ready to work again, load up that session using:\n\n    :VimpanelSessionLoad\n    \nAnd that's about it. To make your life easier, you can use abbreviations or mappings for all these commands.\nHere are some recommendations to put in your `vimrc`:\n\n    cabbrev ss VimpanelSessionMake\n    cabbrev sl VimpanelSessionLoad\n    cabbrev vp Vimpanel\n    cabbrev vl VimpanelLoad\n    cabbrev vc VimpanelCreate\n    cabbrev ve VimpanelEdit\n    cabbrev vr VimpanelRemove\n    \nTip: autocomplete works for panel names, so you can press `vl\u003cspace\u003e\u003ctab\u003e` and get a full list of panel names.\n\n### Commands\n\n    VimpanelCreate {name}\n\nCreates a new panel with the specified name. Panel data is stored in a file called `name` located in `~/vimpanel/`    \nThis location is configurable with the `g:VimpanelStorage` option.\n\n    Vimpanel {path}\n    \nAdd the specified `path` as a root and rebuilds the panel.\n\n    VimpanelAdd {path}\n\nAdd the specified `path` to the panel storage file (same as `:Vimpanel` but without the rebuild).\n\n    VimpanelEdit {name}\n    \nOpen the storage file associated with the panel. This file contains a list of all root paths contained by this panel.\nYou can edit this file, change the order of the roots or delete some entries. After editing, you need to run the\n`:VimpanelRebuild` or `:VimpanelRefresh` commands to visually update the panel.\n\n    VimpanelOpen {name}\n    \nOpen the panel with the specified name in the current window. This will not expand any root nodes that the panel\nmay contain.\n\n    VimpanelSave\n    \nSaves the state of the focused panel. The full path for all open nodes will be stored in a file called\n`~/vimpanel/{name}_session`, where `{name}` is obviously the name of the panel. Note that you don't need to\nsave the panel after adding a root node with the `:Vimpanel` command, this is done automatically. \nThe `:VimpanelSave` command only saves expanded directories.\n    \n    VimpanelLoad {name}\n    \nLoads the panel with the specified name in the current window, and restores its state. Nodes previously \nsaved when the `:VimpanelSave` command was issued will be expanded.\n\n    VimpanelRebuild\n    \nRebuilds the active panel. This will read the entries from the panel storage file and will update the root\nnodes accordingly.\n\n    VimpanelRefresh\n    \nRebuilds the panel and also refreshes all the open directories in the panel by reading data from the filesystem. \nNote that this command incorporates the functionality of the `:VimpanelRebuild` command.\n\n    VimpanelToggleLeft [{name}]\n\nToggles the display of a panel in a window on the left side of the screen. If no panel name is given, the last\nactive panel is used.\n\n    VimpanelToggleRight [{name}]\n\nSame as `:VimpanelToggleLeft` but for the right side of the screen.\n\n    VimpanelSessionMake [{name}]\n    \nSaves the current state of all the panels and all Vim windows and buffers. This is similar to `mksession` but it \nsaves your panels as well. The session is stored in a script called `{name}.vim` located in the storage \ndirectory. If no name is provided, `default.vim` is used.\n\n    VimpanelSessionLoad [{name}]\n    \nRestores Vim (panels, windows, buffers) to the state saved by the `:VimpanelSessionMake` command. If no name\nis provided, it attempts to load the session called `default`.\n\n### Mappings inside the panel\n\n    \u003cCR\u003e or o or double-click       expand directory or open file\n    \u003cF5\u003e                            refresh panel\n    \u003cF6\u003e                            toggle the display of hidden files and folders\n    t                               open file in new tab\n    \u003cC-c\u003e or yy                     copy selected node (file or dir)\n    \u003cC-v\u003e or p                      paste nodes\n    dd                              delete node\n    r                               rename node\n    a                               add new node\n    ff                              copy node path to clipboard\n    \nYou can use visual selection (`v` or `V`) to grab some files and then press `\u003cC-c\u003e` or `y` to copy them. \nPaste them anywhere else with the `p` key.\n\n### Explorer mode\n\nToggle explorer mode by selecting a folder and pressing the `x` key. In this mode you can freely explore the filesystem. \nThe selected folder will become the root of the tree, but you can change to another root using the `c` key or explore the\nparent directory using the `u` key (move up).\n\nWhy is this mode needed? For 2 main reasons:\n\n* to keep focus on a single tree\n* for the ability to navigate up in the folder hierarchy\n\n### Config\n\n    g:VimpanelStorage\n\nA string representing the path to the storage folder. This folder holds all the panel data and session information.   \nDefault: `~/vimpanel`\n\n    g:VimpanelCompact \n\nSet this to 1 to remove the extra blank line that separates trees.   \nDefault: 0\n\n    g:VimpanelWinSize\n\nInitial size (in columns) of the vimpanel window.    \nDefault: 31\n\n    g:VimpanelShowHidden\n\nSet this to 0 to hide the files and folders starting with `.` for all the panels.    \nDefault: 1\n\n    g:VimpanelCallback()\n\nA function that can be implemented by users in their `vimrc` to execute custom logic\nwhen entries are added or removed from the panel.    \nDefault: None\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmihaifm%2Fvimpanel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmihaifm%2Fvimpanel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmihaifm%2Fvimpanel/lists"}