All Projects → mihaifm → Vimpanel

mihaifm / Vimpanel

A modern side panel for Vim

Projects that are alternatives of or similar to Vimpanel

vim-hugo-helper
A small Vim plugin with a set of helpers for Hugo https://gohugo.io
Stars: ✭ 82 (-15.46%)
Mutual labels:  vim-plugin, vim-plugins
Tmux Complete.vim
Vim plugin for insert mode completion of words in adjacent tmux panes
Stars: ✭ 447 (+360.82%)
Mutual labels:  vim-plugin, vim-plugins
Pear Tree
A Vim auto-pair plugin that supports multi-character pairs, intelligent matching, and more
Stars: ✭ 327 (+237.11%)
Mutual labels:  vim-plugin, vim-plugins
vim-tmuxlike
A vim plugin that mimics the actions of tmux. 像操作Tmux一样操作Vim
Stars: ✭ 20 (-79.38%)
Mutual labels:  vim-plugin, vim-plugins
Hot Reload.vim
A (Neo)vim plugin for Flutter to automatically hot reload the project every time a file is saved
Stars: ✭ 33 (-65.98%)
Mutual labels:  vim-plugin, vim-plugins
vim-js-file-import
Import/require files in javascript and typescript with single button!
Stars: ✭ 130 (+34.02%)
Mutual labels:  vim-plugin, vim-plugins
Nerdcommenter
Vim plugin for intensely nerdy commenting powers
Stars: ✭ 4,454 (+4491.75%)
Mutual labels:  vim-plugin, vim-plugins
filestyle
filestyle is a Vim plugin that highlights unwanted whitespace and characters.
Stars: ✭ 30 (-69.07%)
Mutual labels:  vim-plugin, vim-plugins
Vimcompletesme
You don't Complete Me; Vim Completes Me! A super simple, super minimal, super light-weight tab completion plugin for Vim.
Stars: ✭ 752 (+675.26%)
Mutual labels:  vim-plugin, vim-plugins
Context.vim
Vim plugin that shows the context of the currently visible buffer contents
Stars: ✭ 688 (+609.28%)
Mutual labels:  vim-plugin, vim-plugins
vim-bettergrep
A better way to grep in vim.
Stars: ✭ 15 (-84.54%)
Mutual labels:  vim-plugin, vim-plugins
Vim Systemd Syntax
Syntax highlighting for systemd service files in Vim.
Stars: ✭ 57 (-41.24%)
Mutual labels:  vim-plugin, vim-plugins
VimConfig
Configuration files for Vi-IMproved.
Stars: ✭ 23 (-76.29%)
Mutual labels:  vim-plugin, vim-plugins
bufstop
Fast and efficient buffer switching for Vim
Stars: ✭ 82 (-15.46%)
Mutual labels:  vim-plugin, vim-plugins
vim-inccomplete
Vim plugin for #include directive completion.
Stars: ✭ 14 (-85.57%)
Mutual labels:  vim-plugin, vim-plugins
Vim Markdown Toc
A vim 7.4+ plugin to generate table of contents for Markdown files.
Stars: ✭ 427 (+340.21%)
Mutual labels:  vim-plugin, vim-plugins
vim-jsonc
⚠️Deprecated⚠️: Vim syntax highlighting plugin for JSON with C-style line (//) and block (/* */) comments.
Stars: ✭ 52 (-46.39%)
Mutual labels:  vim-plugin, vim-plugins
swifty-vim
⌨️ A Vim plugin for Swift which provides file detection, syntax highlighting, support for compiling and running tests, and optional support for formatting and linting tools.
Stars: ✭ 18 (-81.44%)
Mutual labels:  vim-plugin, vim-plugins
Alchemist.vim
Elixir Integration Into Vim
Stars: ✭ 632 (+551.55%)
Mutual labels:  vim-plugin, vim-plugins
Vim Strand
A barebones Vim plugin manger written in Rust
Stars: ✭ 38 (-60.82%)
Mutual labels:  vim-plugin, vim-plugins

Vimpanel

  • Add any folder to the panel
  • Each folder can be expanded independently
  • You can stick files in there as well
  • Drag and drop works too
  • Create and display any number of panels
  • Session support: find your panels and all other windows the way you left them when you exited Vim
  • Filesystem operations, including file copying using visual selection
  • Proper handling of Windows paths
  • Explore the filesystem without constrains, in explorer mode
  • Use it for project management, keeping bookmarks, notes or anything you like

Vimpanel builds upon NERDTree, in an attempt to make the side panel a place where you can keep your stuff organized, rather than just a file system explorer.

screenshot

Getting started

Begin by creating a new panel with the :VimpanelCreate command.

:VimpanelCreate myprojects

Load this panel in the current window with :VimpanelLoad

:VimpanelLoad myprojects

Add entries to the panel with the :Vimpanel command.

:Vimpanel D:\apps\myapp

The path you just added will act as a root and you can now expand and browse it. At any time you can add other roots to the panel.

To get rid of a root, select it and use the :VimpanelRemove command. This does not delete anything from the filesystem, it just takes it off the panel.

Sort your panel entries by editing the Vimpanel storage file. The format of this file is painfully simple: each line is an entry to the panel. There is a :VimpanelEdit command that makes this easier, by opening up that file:

:VimpanelEdit mypanel

You will need to refresh the panel after this, with the :VimpanelRefresh command or the <F5> key.

Inside the panel, focus on a single directory by entering explorer mode:

x

In this mode, you can also move up a dir by using the u key, or change the root by using the c key. Exit explorer mode at any time by pressing x again.

Inside the panel, several actions and filesystem operations are available. Check the full list below.

When you're done working, save the state of you panel and everything else you have on the screen:

:VimpanelSessionMake

This uses Vim's mksession command and some extra magic to save the state of your panels (the state is defined by which dirs are expanded and which are closed). You can optionally pass in a session name to the command, if you want to keep multiple sessions with different names.

When you're ready to work again, load up that session using:

:VimpanelSessionLoad

And that's about it. To make your life easier, you can use abbreviations or mappings for all these commands. Here are some recommendations to put in your vimrc:

cabbrev ss VimpanelSessionMake
cabbrev sl VimpanelSessionLoad
cabbrev vp Vimpanel
cabbrev vl VimpanelLoad
cabbrev vc VimpanelCreate
cabbrev ve VimpanelEdit
cabbrev vr VimpanelRemove

Tip: autocomplete works for panel names, so you can press vl<space><tab> and get a full list of panel names.

Commands

VimpanelCreate {name}

Creates a new panel with the specified name. Panel data is stored in a file called name located in ~/vimpanel/
This location is configurable with the g:VimpanelStorage option.

Vimpanel {path}

Add the specified path as a root and rebuilds the panel.

VimpanelAdd {path}

Add the specified path to the panel storage file (same as :Vimpanel but without the rebuild).

VimpanelEdit {name}

Open the storage file associated with the panel. This file contains a list of all root paths contained by this panel. You can edit this file, change the order of the roots or delete some entries. After editing, you need to run the :VimpanelRebuild or :VimpanelRefresh commands to visually update the panel.

VimpanelOpen {name}

Open the panel with the specified name in the current window. This will not expand any root nodes that the panel may contain.

VimpanelSave

Saves the state of the focused panel. The full path for all open nodes will be stored in a file called ~/vimpanel/{name}_session, where {name} is obviously the name of the panel. Note that you don't need to save the panel after adding a root node with the :Vimpanel command, this is done automatically. The :VimpanelSave command only saves expanded directories.

VimpanelLoad {name}

Loads the panel with the specified name in the current window, and restores its state. Nodes previously saved when the :VimpanelSave command was issued will be expanded.

VimpanelRebuild

Rebuilds the active panel. This will read the entries from the panel storage file and will update the root nodes accordingly.

VimpanelRefresh

Rebuilds the panel and also refreshes all the open directories in the panel by reading data from the filesystem. Note that this command incorporates the functionality of the :VimpanelRebuild command.

VimpanelToggleLeft [{name}]

Toggles the display of a panel in a window on the left side of the screen. If no panel name is given, the last active panel is used.

VimpanelToggleRight [{name}]

Same as :VimpanelToggleLeft but for the right side of the screen.

VimpanelSessionMake [{name}]

Saves the current state of all the panels and all Vim windows and buffers. This is similar to mksession but it saves your panels as well. The session is stored in a script called {name}.vim located in the storage directory. If no name is provided, default.vim is used.

VimpanelSessionLoad [{name}]

Restores Vim (panels, windows, buffers) to the state saved by the :VimpanelSessionMake command. If no name is provided, it attempts to load the session called default.

Mappings inside the panel

<CR> or o or double-click       expand directory or open file
<F5>                            refresh panel
<F6>                            toggle the display of hidden files and folders
t                               open file in new tab
<C-c> or yy                     copy selected node (file or dir)
<C-v> or p                      paste nodes
dd                              delete node
r                               rename node
a                               add new node
ff                              copy node path to clipboard

You can use visual selection (v or V) to grab some files and then press <C-c> or y to copy them. Paste them anywhere else with the p key.

Explorer mode

Toggle explorer mode by selecting a folder and pressing the x key. In this mode you can freely explore the filesystem. The selected folder will become the root of the tree, but you can change to another root using the c key or explore the parent directory using the u key (move up).

Why is this mode needed? For 2 main reasons:

  • to keep focus on a single tree
  • for the ability to navigate up in the folder hierarchy

Config

g:VimpanelStorage

A string representing the path to the storage folder. This folder holds all the panel data and session information.
Default: ~/vimpanel

g:VimpanelCompact 

Set this to 1 to remove the extra blank line that separates trees.
Default: 0

g:VimpanelWinSize

Initial size (in columns) of the vimpanel window.
Default: 31

g:VimpanelShowHidden

Set this to 0 to hide the files and folders starting with . for all the panels.
Default: 1

g:VimpanelCallback()

A function that can be implemented by users in their vimrc to execute custom logic when entries are added or removed from the panel.
Default: None

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].