A minimalist Vim plugin manager.

Related tags

Command-line Toolsvim
Overview

vim-plugtravis-ci

A minimalist Vim plugin manager.

Pros.

  • Easy to set up: Single file. No boilerplate code required.
  • Easy to use: Concise, intuitive syntax
  • Super-fast parallel installation/update (with any of +job, +python, +python3, +ruby, or Neovim)
  • Creates shallow clones to minimize disk space usage and download time
  • On-demand loading for faster startup time
  • Can review and rollback updates
  • Branch/tag/commit support
  • Post-update hooks
  • Support for externally managed plugins

Installation

Download plug.vim and put it in the "autoload" directory.

Vim

Unix
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

You can automate the process by putting the command in your Vim configuration file as suggested here.

Windows (PowerShell)
iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`
    ni $HOME/vimfiles/autoload/plug.vim -Force

Neovim

Unix, Linux
sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
       https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
Linux (Flatpak)
curl -fLo ~/.var/app/io.neovim.nvim/data/nvim/site/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Windows (PowerShell)
iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`
    ni "$(@($env:XDG_DATA_HOME, $env:LOCALAPPDATA)[$null -eq $env:XDG_DATA_HOME])/nvim-data/site/autoload/plug.vim" -Force

Getting Help

  • See tutorial page to learn the basics of vim-plug
  • See tips and FAQ pages for common problems and questions
  • See requirements page for debugging information & tested configurations
  • Create an issue

Usage

Add a vim-plug section to your ~/.vimrc (or stdpath('config') . '/init.vim' for Neovim)

  1. Begin the section with call plug#begin()
  2. List the plugins with Plug commands
  3. call plug#end() to update &runtimepath and initialize plugin system
    • Automatically executes filetype plugin indent on and syntax enable. You can revert the settings after the call. e.g. filetype indent off, syntax off, etc.

Example

" Specify a directory for plugins
" - For Neovim: stdpath('data') . '/plugged'
" - Avoid using standard Vim directory names like 'plugin'
call plug#begin('~/.vim/plugged')

" Make sure you use single quotes

" Shorthand notation; fetches https://github.com/junegunn/vim-easy-align
Plug 'junegunn/vim-easy-align'

" Any valid git URL is allowed
Plug 'https://github.com/junegunn/vim-github-dashboard.git'

" Multiple Plug commands can be written in a single line using | separators
Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets'

" On-demand loading
Plug 'scrooloose/nerdtree', { 'on':  'NERDTreeToggle' }
Plug 'tpope/vim-fireplace', { 'for': 'clojure' }

" Using a non-default branch
Plug 'rdnetto/YCM-Generator', { 'branch': 'stable' }

" Using a tagged release; wildcard allowed (requires git 1.9.2 or above)
Plug 'fatih/vim-go', { 'tag': '*' }

" Plugin options
Plug 'nsf/gocode', { 'tag': 'v.20150303', 'rtp': 'vim' }

" Plugin outside ~/.vim/plugged with post-update hook
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }

" Unmanaged plugin (manually installed and updated)
Plug '~/my-prototype-plugin'

" Initialize plugin system
call plug#end()

Reload .vimrc and :PlugInstall to install plugins.

Commands

Command Description
PlugInstall [name ...] [#threads] Install plugins
PlugUpdate [name ...] [#threads] Install or update plugins
PlugClean[!] Remove unlisted plugins (bang version will clean without prompt)
PlugUpgrade Upgrade vim-plug itself
PlugStatus Check the status of plugins
PlugDiff Examine changes from the previous update and the pending changes
PlugSnapshot[!] [output path] Generate script for restoring the current snapshot of the plugins

Plug options

Option Description
branch/tag/commit Branch/tag/commit of the repository to use
rtp Subdirectory that contains Vim plugin
dir Custom directory for the plugin
as Use different name for the plugin
do Post-update hook (string or funcref)
on On-demand loading: Commands or -mappings
for On-demand loading: File types
frozen Do not update unless explicitly specified

Global options

Flag Default Description
g:plug_threads 16 Default number of threads to use
g:plug_timeout 60 Time limit of each task in seconds (Ruby & Python)
g:plug_retries 2 Number of retries in case of timeout (Ruby & Python)
g:plug_shallow 1 Use shallow clone
g:plug_window vertical topleft new Command to open plug window
g:plug_pwindow above 12new Command to open preview window in PlugDiff
g:plug_url_format https://git::@github.com/%s.git printf format to build repo URL (Only applies to the subsequent Plug commands)

Keybindings

  • D - PlugDiff
  • S - PlugStatus
  • R - Retry failed update or installation tasks
  • U - Update plugins in the selected range
  • q - Close the window
  • :PlugStatus
    • L - Load plugin
  • :PlugDiff
    • X - Revert the update

Example: A small sensible Vim configuration

call plug#begin()
Plug 'tpope/vim-sensible'
call plug#end()

On-demand loading of plugins

" NERD tree will be loaded on the first invocation of NERDTreeToggle command
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }

" Multiple commands
Plug 'junegunn/vim-github-dashboard', { 'on': ['GHDashboard', 'GHActivity'] }

" Loaded when clojure file is opened
Plug 'tpope/vim-fireplace', { 'for': 'clojure' }

" Multiple file types
Plug 'kovisoft/paredit', { 'for': ['clojure', 'scheme'] }

" On-demand loading on both conditions
Plug 'junegunn/vader.vim',  { 'on': 'Vader', 'for': 'vader' }

" Code to execute when the plugin is lazily loaded on demand
Plug 'junegunn/goyo.vim', { 'for': 'markdown' }
autocmd! User goyo.vim echom 'Goyo is now loaded!'

The for option is generally not needed as most plugins for specific file types usually don't have too much code in the plugin directory. You might want to examine the output of vim --startuptime before applying the option.

Post-update hooks

There are some plugins that require extra steps after installation or update. In that case, use the do option to describe the task to be performed.

Plug 'Shougo/vimproc.vim', { 'do': 'make' }
Plug 'ycm-core/YouCompleteMe', { 'do': './install.py' }

If the value starts with :, it will be recognized as a Vim command.

Plug 'fatih/vim-go', { 'do': ':GoInstallBinaries' }

If you need more control, you can pass a reference to a Vim function that takes a single argument.

function! BuildYCM(info)
  " info is a dictionary with 3 fields
  " - name:   name of the plugin
  " - status: 'installed', 'updated', or 'unchanged'
  " - force:  set on PlugInstall! or PlugUpdate!
  if a:info.status == 'installed' || a:info.force
    !./install.py
  endif
endfunction

Plug 'ycm-core/YouCompleteMe', { 'do': function('BuildYCM') }

Both forms of post-update hook are executed inside the directory of the plugin and only run when the repository has changed, but you can force it to run unconditionally with the bang-versions of the commands: PlugInstall! and PlugUpdate!.

Make sure to escape BARs and double-quotes when you write the do option inline as they are mistakenly recognized as command separator or the start of the trailing comment.

Plug 'junegunn/fzf', { 'do': 'yes \| ./install' }

But you can avoid the escaping if you extract the inline specification using a variable (or any Vimscript expression) as follows:

let g:fzf_install = 'yes | ./install'
Plug 'junegunn/fzf', { 'do': g:fzf_install }

PlugInstall! and PlugUpdate!

The installer takes the following steps when installing/updating a plugin:

  1. git clone or git fetch from its origin
  2. Check out branch, tag, or commit and optionally git merge remote branch
  3. If the plugin was updated (or installed for the first time)
    1. Update submodules
    2. Execute post-update hooks

The commands with the ! suffix ensure that all steps are run unconditionally.

Articles

Collaborators

License

MIT

Comments
  • Cygwin filepaths and git (windows build) on Cygwin Vim

    Cygwin filepaths and git (windows build) on Cygwin Vim

    After searching I found https://github.com/junegunn/vim-plug/issues/556 fatal: destination path '/home/...' already exists and is not an empty

    Now I see the message destination path already exists and is not an empty directory is probably coming from git. The git version on my system path is git version 2.21.0.windows.1, and it is the one I want to use. I do not see why it should break a vim package manager.

    Installed Cygwin and vim. Now when I run :PlugInstall for the second time (after installing everything successfully first) it says destination path already exists and is not an empty directory. But it should say something like All up to date because everything is already installed and up-to-date:

      1 Updated. Elapsed time: 0.218449 sec.
      2 [xxx]
      3
      4 - Finishing ... Done!
      5 x vim-hug-neovim-rpc:
      6     fatal: destination path '/home/Professional/.vim/plugged/vim-hug-neovim-rpc' already exists and is not an empty directory.
      7 x deoplete.nvim:
      8     fatal: destination path '/home/Professional/.vim/plugged/deoplete.nvim' already exists and is not an empty directory.
      9 x nvim-yarp:
     10     fatal: destination path '/home/Professional/.vim/plugged/nvim-yarp' already exists and is not an empty directory.
    

    image


    .vimrc

    " https://github.com/junegunn/vim-plug/wiki/tips
    " https://github.com/junegunn/vim-plug/issues/894
    if v:version >= 740
    
      if empty(glob('~/.vim/autoload/plug.vim'))
        let s:downloadurl = "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim"
        let s:destinedirectory = $HOME . "/.vim/autoload/"
        let s:destinefile = s:destinedirectory . "plug.vim"
    
        if !isdirectory(s:destinedirectory)
          call mkdir(s:destinedirectory, "p")
        endif
    
        if executable("curl")
          silent execute '!curl --output ' . s:destinefile .
              \ ' --create-dirs --location --fail --silent ' . s:downloadurl
    
        else
          silent execute '!wget --output-document ' . s:destinefile .
              \ ' --no-host-directories --force-directories --quiet ' . s:downloadurl
        endif
    
        autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
      endif
    
      " https://github.com/junegunn/vim-plug
      "
      " Specify a directory for plugins
      " - For Neovim: stdpath('data') . '/plugged'
      " - Avoid using standard Vim directory names like 'plugin'
      call plug#begin('~/.vim/plugged')
    
      if v:version >= 800
    
        if has('nvim')
          Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
        else
          Plug 'Shougo/deoplete.nvim'
          Plug 'roxma/nvim-yarp'
          Plug 'roxma/vim-hug-neovim-rpc'
        endif
        let g:deoplete#enable_at_startup = 1
    
      endif
    
      " Initialize plugin system
      call plug#end()
    
    endif
    
    • Type:
      • [X] Bug
      • [ ] Enhancement
      • [ ] Feature Request
      • [ ] Question
    • OS:
      • [ ] All/Other
      • [ ] Linux
      • [ ] OS X
      • [X] Windows
    • Vim:
      • [X] Terminal Vim
      • [ ] GVim
      • [ ] Neovim
    $ vim --version
    VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Mar  4 2018 23:29:48)
    Included patches: 1-1567
    Modified by <[email protected]>
    Compiled by <[email protected]>
    Huge version without GUI.  Features included (+) or not (-):
    +acl               +farsi             +mouse_sgr         -tag_any_white
    +arabic            +file_in_path      -mouse_sysmouse    -tcl
    +autocmd           +find_in_path      +mouse_urxvt       +termguicolors
    -autoservername    +float             +mouse_xterm       +terminal
    -balloon_eval      +folding           +multi_byte        +terminfo
    +balloon_eval_term -footer            +multi_lang        +termresponse
    -browse            +fork()            -mzscheme          +textobjects
    ++builtin_terms    +gettext           +netbeans_intg     +timers
    +byte_offset       -hangul_input      +num64             +title
    +channel           +iconv             +packages          -toolbar
    +cindent           +insert_expand     +path_extra        +user_commands
    -clientserver      +job               +perl/dyn          +vertsplit
    +clipboard         +jumplist          +persistent_undo   +virtualedit
    +cmdline_compl     +keymap            +postscript        +visual
    +cmdline_hist      +lambda            +printer           +visualextra
    +cmdline_info      +langmap           +profile           +viminfo
    +comments          +libcall           +python/dyn        +vreplace
    +conceal           +linebreak         +python3/dyn       +wildignore
    +cryptv            +lispindent        +quickfix          +wildmenu
    +cscope            +listcmds          +reltime           +windows
    +cursorbind        +localmap          +rightleft         +writebackup
    +cursorshape       +lua/dyn           +ruby/dyn          -X11
    +dialog_con        +menu              +scrollbind        -xfontset
    +diff              +mksession         +signs             -xim
    +digraphs          +modify_fname      +smartindent       -xpm
    -dnd               +mouse             +startuptime       -xsmp
    -ebcdic            -mouseshape        +statusline        -xterm_clipboard
    +emacs_tags        +mouse_dec         -sun_workshop      -xterm_save
    +eval              -mouse_gpm         +syntax
    +ex_extra          -mouse_jsbterm     +tag_binary
    +extra_search      +mouse_netterm     +tag_old_static
       system vimrc file: "/etc/vimrc"
         user vimrc file: "$HOME/.vimrc"
     2nd user vimrc file: "~/.vim/vimrc"
          user exrc file: "$HOME/.exrc"
           defaults file: "$VIMRUNTIME/defaults.vim"
      fall-back for $VIM: "/etc"
     f-b for $VIMRUNTIME: "/usr/share/vim/vim80"
    Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H     -ggdb -O2 -pipe -Wall -Werror=format-security -fstack-protector-strong --param=ssp-buffer-size=4 -fdebug-prefix-map=/usr/src/ports/vim/vim-8.0.1567-1.x86_64/build=/usr/src/debug/vim-8.0.1567-1 -fdebug-prefix-map=/usr/src/ports/vim/vim-8.0.1567-1.x86_64/src/vim-8.0.1567=/usr/src/debug/vim-8.0.1567-1 -fstack-protector-strong -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
    Linking: gcc   -L. -fstack-protector  -L/usr/local/lib -Wl,--as-needed -o vim.exe        -lm -lelf -lnsl    -lncursesw -liconv -lacl -lattr -lintl   -Wl,--enable-auto-import -Wl,--export-all-symbols -Wl,--enable-auto-image-base -fstack-protector-strong  -L/usr/lib/perl5/5.26/x86_64-cygwin-threads/CORE -lperl -lpthread -ldl -lcrypt
    
    enhancement help-needed windows cygwin 
    opened by evandrocoan 51
  • PlugUpdate bugged on Windows

    PlugUpdate bugged on Windows

    Attempting to do :PlugUpdate, even with merely one plugin results in the following error on Windows:

    Error detected while processing function <SNR>3_update..<SNR>3_update_impl..<SNR>3_update_vim..<SNR>3_tick..<SNR>3_spawn..<SNR>3_system:
    line    7:
    E484: Can't open file C:\Users\Orson\AppData\Local\Temp\VIo5763.tmp
    Error detected while processing function <SNR>3_update..<SNR>3_update_impl..<SNR>3_update_vim..<SNR>3_tick..<SNR>3_spawn:
    line   22:
    E171: Missing :endif
    Error detected while processing function <SNR>3_update..<SNR>3_update_impl..<SNR>3_update_vim..<SNR>3_tick:
    line   28:
    E171: Missing :endif
    Error detected while processing function <SNR>3_update..<SNR>3_update_impl:
    line  106:
    E171: Missing :endif
    
    windows 
    opened by orlp 42
  • Error while updating plugins (invalid key)

    Error while updating plugins (invalid key)

    When trying to update my plugins I get the following errors:

    Updated. Elapsed time: 5.053988 sec.
    [xxxxxxxxxxxxxxxxxxxxxx]
    
    - Finishing ... Done!
    x vim-niji:
        error: invalid key: remote.origin.url)
        PlugClean required.
    x vim-repeat:
        error: invalid key: remote.origin.url)
        PlugClean required.
    x vim-textobj-comment:
        error: invalid key: remote.origin.url)
        PlugClean required.
    x vim-textobj-user:
        error: invalid key: remote.origin.url)
        PlugClean required.
    x vim-commentary:
        error: invalid key: remote.origin.url)
        PlugClean required.
    x a.vim:
        error: invalid key: remote.origin.url)
        PlugClean required.
    x nerdtree:
        error: invalid key: remote.origin.url)
        PlugClean required.
    x rust.vim:
        error: invalid key: remote.origin.url)
        PlugClean required.
    x supertab:
        error: invalid key: remote.origin.url)
        PlugClean required.
    x vim-fugitive:
        error: invalid key: remote.origin.url)
        PlugClean required.
    x xterm-color-table.vim:
        error: invalid key: remote.origin.url)
        PlugClean required.
    x OnSyntaxChange:
        error: invalid key: remote.origin.url)
        PlugClean required.
    x rainbow:
        error: invalid key: remote.origin.url)
        PlugClean required.
    x vim-surround:
        error: invalid key: remote.origin.url)
        PlugClean required.
    x vim-nerdtree-tabs:
        error: invalid key: remote.origin.url)
        PlugClean required.
    x vim-bufferline:
        error: invalid key: remote.origin.url)
        PlugClean required.
    x incsearch.vim:
        error: invalid key: remote.origin.url)
        PlugClean required.
    x tagbar:
        error: invalid key: remote.origin.url)
        PlugClean required.
    x vim-easy-align:
        error: invalid key: remote.origin.url)
        PlugClean required.
    x vim-easymotion:
        error: invalid key: remote.origin.url)
        PlugClean required.
    x unite.vim:
        error: invalid key: remote.origin.url)
        PlugClean required.
    x wildfire.vim:
        error: invalid key: remote.origin.url)
        PlugClean required.
    

    Latest version of vim-plug, on Windows 7. My dotfiles directory is located in a directory with spaces in the name (Program Files), that might be related. To reproduce all I have to do is :PlugClean<CR>:PlugInstall<CR>:PlugInstall.

    bug windows 
    opened by orlp 40
  • How to update a modified plugin?

    How to update a modified plugin?

    Suppose I have a plugin and add some custom modification. I wish to keep to update with original like git pull does, and only notify me when some conflict occur. How can I achieve this?


    
    
    • Type:
      • [ ] Bug
      • [ ] Enhancement
      • [ ] Feature Request
      • [x] Question
    • OS:
      • [ ] All/Other
      • [ ] Linux
      • [ ] OS X
      • [ ] Windows
    • Vim:
      • [ ] Terminal Vim
      • [ ] GVim
      • [ ] Neovim
    question 
    opened by SolaWing 39
  • On new plugin install, display gets stuck on

    On new plugin install, display gets stuck on "Cloning into..."

    I'm running Neovim on iTerm2. Neovim --version gives NVIM v0.1.0-144-gda9cf04 (compiled Nov 30 2015 20:54:54).

    When I add a new plugin to my symlinked .vimrc and run :PlugInstall in Neovim, the new plugin installs successfully, but my displays ends up on the following:

    Updated. Elapsed time: 1.231175 sec.
    [================]
    
    - Finishing ... Done!
    - matchit: Already installed
    - vim-ruby: Already installed
    - vim-pasta: Already installed
    - vim-vinegar: Already installed
    - vim-smooth-scroll: Already installed
    - vim-repeat: Cloning into '/Users/samschlinkert/.vim/plugged/vim-repeat'...
    - goyo.vim: Already installed
    - vim-move: Already installed
    - supertab: Already installed
    - tcomment_vim: Already installed
    - vim-closer: Already installed
    - vim-surround: Already installed
    - vim-multiple-cursors: Already installed
    - vim-sneak: Already installed
    - ctrlp.vim: Already installed
    - vim-visual-star-search: Already installed
    

    Which to me looks like vim-plug got hung up trying to clone vim-repeat.

    After running this :PlugInstall there is now a vim-repeat directory in my ~/.vim/plugged directory, and if I start Neovim again and run :PlugInstall again, is says - vim-repeat: Already installed, so I'm assuming it actually installed. But the display saying "Cloning..." that first time is a bit concerning. It feels like it should display something like "Installed successfully" if/when the new plugin is installed?

    neovim 
    opened by sts10 38
  • [neovim] PlugUpdate/Install as start commands don't show any UI

    [neovim] PlugUpdate/Install as start commands don't show any UI

    Hello, a couple of days ago I updated vim-plug to the latest version. Today I tried to run the usual nvim +PlugUpdate and even though the update is performed correctly the UI isn't updated/shown until the process is finished. The same happens when running PlugInstall.

    Everything works correctly if I execute both commands when neovim has already started.

    The issue seems to have been introduced with https://github.com/junegunn/vim-plug/pull/227 but I don't understand if it's something expected with that change, or I'm experiencing a bug.

    neovim python 
    opened by choco 35
  • add option to only use HEAD version of git when installing

    add option to only use HEAD version of git when installing

    vim-plug is really fast when you update your plugins. but what can take a rather long time to do a fresh install (some plugins have a rather long git history). but actually I'm not interested in the history.

    e.g. I just installed YCM which is a rather huge repo:

    Updated. Elapsed time: 170.097284 sec. [============================================] ...

    191M ./YouCompleteMe

    if I just clone the HEAD version it with git:

    > time git clone --depth=1 https://github.com/Valloric/YouCompleteMe.git
    Cloning into 'YouCompleteMe'...
    remote: Counting objects: 72, done.
    remote: Compressing objects: 100% (67/67), done.
    remote: Total 72 (delta 3), reused 41 (delta 0), pack-reused 0
    Unpacking objects: 100% (72/72), done.
    Checking connectivity... done.
    
    real    0m2.319s
    user    0m0.090s
    sys 0m0.084s
    

    compare that to the full repo:

    > time git clone https://github.com/Valloric/YouCompleteMe.git
    Cloning into 'YouCompleteMe'...
    remote: Counting objects: 29994, done.
    remote: Compressing objects: 100% (7/7), done.
    remote: Total 29994 (delta 0), reused 0 (delta 0), pack-reused 29987
    Receiving objects: 100% (29994/29994), 29.15 MiB | 576.00 KiB/s, done.
    Resolving deltas: 100% (9690/9690), done.
    Checking connectivity... done.
    
    real    1m0.539s
    user    0m2.410s
    sys 0m2.568s
    
    opened by marcmo 35
  • ftplugin/**/*.vim don't load lazily

    ftplugin/**/*.vim don't load lazily

    I found that I need to add 'ftplugin' to the list of types in the s:lod_ft function to make vim-go plugin work properly. Without it the :GoFmt command was not available.

    function! s:lod_ft(name, plug)
      if has_key(s:loaded, a:name)
        return
      endif
      call s:lod(a:plug, ['ftplugin', 'plugin', 'after'])
      let s:loaded[a:name] = 1
    endfunction
    

    My little knowledge of the vim internals doesn't allow me to make it a pull request. Can this change break something?

    bug 
    opened by opennota 31
  • Finishing ... Done! with no plugins, any log file?

    Finishing ... Done! with no plugins, any log file?

    Hi,

    I have a Centos 7 Vagrant box on which I run the next series of commands. It is based on this baseimage "https://f0fff3908f081cb6461b407be80daf97f07ac418.googledrive.com/host/0BwtuV7VyVTSkUG1PM3pCeDJ4dVE/centos7.box"

    $sudo yum install -y vim-enhanced git
    $python --version
    Python 2.6.6
    $ruby --version
    ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
    $rm -rf ~/.vim && wget https://raw.githubusercontent.com/andreicristianpetcu/dotfiles/c6ed5186f8d0e1d0e31cded252185d40bb4fdb94/vimrc -O ~/.vimrc && vim
    

    Vim fires up with the "PlugInstall" command as it should but I get this

    Updated. Elapsed time: 0.036210 sec.
    - Finishing ... Done!
    
    $ls -l ~/.vim/bundle
    total 0
    
    :PlugStatus
    Finished. 101 error(s). 
    x fzf: 
       Not found. Try PlugInstall.
    x unite-outline:
       Not found. Try PlugInstall.
    

    How can I troubleshoot this? Is there any dependency that vim-plug requires except for git, ruby and python? This works on Ubuntu 14.04.

    Thank you for building this awesome plugin!

    bug 
    opened by andreicristianpetcu 30
  • Neovim installer should be synchronous during `vim_starting`

    Neovim installer should be synchronous during `vim_starting`

    Since the new parallel installer for Neovim is asynchronous, we cannot do nvim +PlugUpdate +qa as before. We can either add an option to PlugUpdate command to quit Vim when it's complete or wait for the addition of jobwait() function suggested by @tarruda. Or we can simply guide the users to use the original Vim instead in this case. See:

    • https://github.com/junegunn/vim-plug/pull/103#issue-45353388
    • https://github.com/junegunn/vim-plug/pull/103#issuecomment-58603245
      • https://github.com/junegunn/vim-plug/pull/103#issuecomment-58605181
    enhancement neovim 
    opened by junegunn 30
  • Vim async feature for parallel update

    Vim async feature for parallel update

    Does vim-plug use the async feature of recent Vim builds for parallel fetching of plugins? If so, this should be documented somewhere, if not, could this be please be enabled?

    VIM - Vi IMproved 7.4 (2013 Aug 10, compiled May 10 2016 21:39:57)
    Included patches: 1-1829
    Compiled by [email protected]
    Huge version with GTK2 GUI.  Features included (+) or not (-):
    +acl             +farsi           +mouse_netterm   +tag_binary
    +arabic          +file_in_path    +mouse_sgr       +tag_old_static
    +autocmd         +find_in_path    -mouse_sysmouse  -tag_any_white
    +balloon_eval    +float           +mouse_urxvt     -tcl
    +browse          +folding         +mouse_xterm     +termguicolors
    ++builtin_terms  -footer          +multi_byte      +terminfo
    +byte_offset     +fork()          +multi_lang      +termresponse
    +channel         +gettext         -mzscheme        +textobjects
    +cindent         -hangul_input    +netbeans_intg   +timers
    +clientserver    +iconv           +packages        +title
    +clipboard       +insert_expand   +path_extra      +toolbar
    +cmdline_compl   +job             -perl            +user_commands
    +cmdline_hist    +jumplist        +persistent_undo +vertsplit
    +cmdline_info    +keymap          +postscript      +virtualedit
    +comments        +langmap         +printer         +visual
    +conceal         +libcall         +profile         +visualextra
    +cryptv          +linebreak       +python/dyn      +viminfo
    
    • Type:
      • [ ] Bug
      • [ ] Enhancement
      • [ ] Feature Request
      • [x] Question
    • OS:
      • [x] All/Other
      • [ ] Linux
      • [ ] OS X
      • [ ] Windows
    • Vim:
      • [x] Terminal Vim
      • [x] GVim
      • [ ] Neovim
    enhancement 
    opened by chrisbra 29
  • E492: No editor command when starting vim in root

    E492: No editor command when starting vim in root

    Explain the problem here ... Whenever I open vim with root privileges and type in ANY vim-plug command eg PlugInstall, PlugStatus, etc I get the error E492: No editor command

    When I write the exact same command in non root vim i can use any command. I checked for spelling, it doesent work. Help would be appreciated :)

     " automaitc installation of vim-plug (siehe tips des github docs)
     78 let data_dir = has('nvim') ? stdpath('data') . '/site' : '~/.vim'
     79 if empty(glob(data_dir . '/autoload/plug.vim'))
     80   silent execute '!curl -fLo '.data_dir.'/autoload/plug.vim --create-dirs  https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
     81   autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
     82 endif
     83  
     84 " vim -plug code
     85 "
     86 call plug#begin('~/plugged')
     87  
     88 " vimtex
     89 Plug 'lervag/vimtex'
     90  
     91  
     92 call plug#end()
    
    
    :version                                                                                                                                                       
    VIM - Vi IMproved 9.0 (2022 Jun 28 kompiliert am Nov 19 2022 14:37:14)
    Inklusive der Patches: 1-910
    Übersetzt von Arch Linux
    Riesige Version ohne GUI. Ein- (+) oder ausschließlich (-) der Eigenschaften:
    +acl               +cmdline_hist      +ex_extra          +jumplist          +mouse_dec         +perl/dyn          -sodium            +textobjects       +wildmenu
    +arabic            +cmdline_info      +extra_search      +keymap            +mouse_gpm         +persistent_undo   -sound             +textprop          +windows
    +autocmd           +comments          -farsi             +lambda            -mouse_jsbterm     +popupwin          +spell             +timers            +writebackup
    +autochdir         +conceal           +file_in_path      +langmap           +mouse_netterm     +postscript        +startuptime       +title             -X11
    -autoservername    +cryptv            +find_in_path      +libcall           +mouse_sgr         +printer           +statusline        -toolbar           -xfontset
    -balloon_eval      +cscope            +float             +linebreak         -mouse_sysmouse    +profile           -sun_workshop      +user_commands     -xim
    +balloon_eval_term +cursorbind        +folding           +lispindent        +mouse_urxvt       -python            +syntax            +vartabs           -xpm
    -browse            +cursorshape       -footer            +listcmds          +mouse_xterm       +python3/dyn       +tag_binary        +vertsplit         -xsmp
    ++builtin_terms    +dialog_con        +fork()            +localmap          +multi_byte        +quickfix          -tag_old_static    +vim9script        -xterm_clipboard
    +byte_offset       +diff              +gettext           +lua/dyn           +multi_lang        +reltime           -tag_any_white     +viminfo           -xterm_save
    +channel           +digraphs          -hangul_input      +menu              -mzscheme          +rightleft         +tcl/dyn           +virtualedit
    +cindent           -dnd               +iconv             +mksession         +netbeans_intg     +ruby/dyn          +termguicolors     +visual
    -clientserver      -ebcdic            +insert_expand     +modify_fname      +num64             +scrollbind        +terminal          +visualextra
    -clipboard         +emacs_tags        +ipv6              +mouse             +packages          +signs             +terminfo          +vreplace
    +cmdline_compl     +eval              +job               -mouseshape        +path_extra        +smartindent       +termresponse      +wildignore
              System-vimrc-Datei: "/etc/vimrc"
            Benutzer-vimrc-Datei: "$HOME/.vimrc"
     zweite Benutzer-vimrc-Datei: "~/.vim/vimrc"
             Benutzer-exrc-Datei: "$HOME/.exrc"
          defaults Datei: "$VIMRUNTIME/defaults.vim"
         Voreinstellung für $VIM: "/usr/share/vim"
    Übersetzt: gcc -c -I. -Iproto -DHAVE_CONFIG_H -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ff
    ile-prefix-map=/build/vim/src=/usr/src/debug/vim -flto=auto -D_REENTRANT -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
    Linken: gcc -L. -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -fstack-protector-strong -rdynamic -Wl,-export-dynamic -Wl,--no-as-needed -Wl,-E -Wl,-rpath,/usr/lib/perl5/5.36/core_perl
    /CORE -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -flto=auto -L/usr/local/lib -o vim -lm -ltinfo -lelf -lacl -lattr -lgpm -Wl,-E -Wl,-rpath,/usr/lib/perl5/5.36/core_perl/CORE -Wl,-O
    1,--sort-common,--as-needed,-z,relro,-z,now -flto -fstack-protector-strong -L/usr/local/lib -L/usr/lib/perl5/5.36/core_perl/CORE -lperl -lpthread -ldl -lm -lcrypt -lutil -lc -L/usr/lib -l
    tclstub8.6 -ldl -lz -lpthread -lm
    
    
    • Type:
      • [x] Bug
      • [ ] Enhancement
      • [ ] Feature Request
      • [ ] Question
    • OS:
      • [ ] All/Other
      • [x] Linux
      • [ ] macOS
      • [ ] Windows
    • Vim:
      • [x] Terminal Vim
      • [ ] GVim
      • [ ] Neovim
    opened by couscous1 0
  • 执行PlugInstall时,报错:列表索引超出范围:2

    执行PlugInstall时,报错:列表索引超出范围:2

    Explain the problem here ...

    image image


    let s:is_win = has('win32')
    let $v = $HOME.(s:is_win ? '\vimfiles' : '/.vim')
    
    " Plug
    let s:bundle_dir = $v.'/bundle'
    call plug#begin(s:bundle_dir)
        Plug 'junegunn/vim-plug'
        Plug 'yianwillis/vimcdoc'
    call plug#end()
    
    
    

    image

    • Type:
      • [x] Bug
      • [ ] Enhancement
      • [ ] Feature Request
      • [ ] Question
    • OS:
      • [ ] All/Other
      • [ ] Linux
      • [ ] macOS
      • [x] Windows
    • Vim:
      • [ ] Terminal Vim
      • [x] GVim
      • [ ] Neovim

    git version: git version 2.36.1.windows.1 cpu: x86_64 built from commit: e2ff68a2d1426758c78d023f863bfa1e03cbc768 sizeof-long: 4 sizeof-size_t: 8 shell-path: /bin/sh feature: fsmonitor--daemon

    opened by xooch95 1
  • Specified branch not found after PlugInstall or PlugUpdate

    Specified branch not found after PlugInstall or PlugUpdate

    Error logs:

    fatal: invalid reference: ag-recursive-switch
    

    Config:

    Plug 'listenerri/vim-easygrep', { 'branch': 'ag-recursive-switch' }
    

    Env:

    • Ubuntu 20.04.5 LTS ( WSL v0.70.4.0 )
    • VIM v8.1
    • vim-plug latest
    opened by listenerri 2
  • Vim-plug in lua, not in vimscript

    Vim-plug in lua, not in vimscript

    • Type:
      • [ ] Bug
      • [ ] Enhancement
      • [x] Feature Request
      • [ ] Question
    • OS:
      • [ ] All/Other
      • [ ] Linux
      • [ ] macOS
      • [ ] Windows
    • Vim:
      • [ ] Terminal Vim
      • [ ] GVim
      • [x] Neovim

    Hey i have suggestions about vim-plug in lua like packer. Maybe it will be good and modernized because so many neovim user prefer lua than vimscript.

    Here my vim-plug in lua :

    --To install plugin use `:PlugInstall`
    local Plug = vim.fn['plug#']
    vim.call('plug#begin', '~/.config/nvim/plugged')
      Plug 'neovim/nvim-lspconfig'
      Plug 'hrsh7th/cmp-nvim-lsp'
      Plug 'hrsh7th/cmp-buffer'
      Plug 'hrsh7th/cmp-path'
      Plug 'hrsh7th/cmp-cmdline'
      Plug 'hrsh7th/nvim-cmp'
      Plug 'L3MON4D3/LuaSnip'
      Plug 'saadparwaiz1/cmp_luasnip'
      Plug 'rafamadriz/friendly-snippets'
      Plug 'onsails/lspkind-nvim'
      Plug 'numToStr/Comment.nvim'
      Plug 'jiangmiao/auto-pairs'
      Plug 'lukas-reineke/indent-blankline.nvim'
      Plug('akinsho/bufferline.nvim', {  tag = 'v3.*' })
      Plug 'kyazdani42/nvim-web-devicons'
      Plug 'kyazdani42/nvim-tree.lua'
      Plug 'nvim-lualine/lualine.nvim'
      Plug('folke/tokyonight.nvim', { branch = 'main' })
      Plug('nvim-treesitter/nvim-treesitter', {['do']= ':TSUpdate'})
    vim.call('plug#end')
    --Colorscheme
    vim.cmd[[
      syntax enable
      colorscheme tokyonight-night
    ]]
    --require
    require('plug-setup')
    require('key')
    
    opened by DinkyTrady 0
  • How can I host my plugin on GitLab?

    How can I host my plugin on GitLab?

    I've searched for "gitlab" in this repository and there were no topics on that. So I want to know how can I host my plugin on gitlab instead of github? Other source hosting systems are also fine.

    • Type:
      • [ ] Bug
      • [ ] Enhancement
      • [ ] Feature Request
      • [x] Question
    • OS:
      • [ ] All/Other
      • [ ] Linux
      • [ ] macOS
      • [ ] Windows
    • Vim:
      • [ ] Terminal Vim
      • [ ] GVim
      • [ ] Neovim
    opened by Invertisment 1
Releases(0.11.0)
  • 0.11.0(Jan 3, 2022)

  • 0.10.0(Oct 7, 2018)

  • 0.9.1(Aug 10, 2016)

    Notable changes

    • Interactive PlugClean using d-operator

      • dd, dip, ...
    • g:plug_pwindow for customizing preview window layout (PlugDiff)

      let g:plug_window = '-tabnew'
      let g:plug_pwindow = 'vertical rightbelow new'
      
    • Added support for { 'do': ':VimCommand' } notation

      • e.g. Plug 'fatih/vim-go', { 'do': ':GoInstallBinaries' }
    • Plug command exported as plug# function

      • e.g. call plug#('junegunn/seoul256.vim')
    Source code(tar.gz)
    Source code(zip)
    plug.vim(66.10 KB)
  • 0.9.0(Apr 17, 2016)

    :PlugUpgrade to get the latest vim-plug.

    Thanks to all that have contributed to vim-plug (listed in alphabetical order).

    • @beatrupp
    • @hobarrera
    • @itspriddle
    • @simonweil
    • @srstevenson
    • @starcraftman
    • @yous

    Notable changes

    • #476 Support wildcards in tag option (Junegunn Choi)
      • ProTip: { 'tag: '*' } will point to the latest tagged release
    • #463 Make Plug{Install,Update}! trigger post-fetch checkout, submodule update (Chayoung You)
      • Use PlugInstall! to switch branches or tags without contacting the remote
      • Also can be used for retrying failed submodule update
    • #462 Detect plugins that are diverged from their origins (Junegunn Choi)
      • PlugStatus will detect such plugins and PlugClean will try to remove them
    • #428 PlugDiff to include graphical representation of commit history (Junegunn Choi)
    • #371 Add as option (Junegunn Choi)
      • Used to resolve name conflict

    Bug fixes and improvements

    • #474 Load ftdetect files in filetypedetect augroup (Junegunn Choi)
    • #460 Fall back to Python installer if Ruby is broken (Junegunn Choi)
    • #459 Clear message on retry (Junegunn Choi)
    • #455 git config should read local .git/config instead of $GIT_CONFIG (Junegunn Choi)
    • Use on User autocmd if possible (Junegunn Choi)
    • #451 Reset colors for git show (Simon Weil)
    • #430 Refactor duplicate logic in installers (Junegunn Choi)
    • #445 Remove redundant checks of git --version in Neovim installer (Junegunn Choi)
    • #439 Do not proceed if getcwd() returns an empty string (Junegunn Choi)
    • #434 Use runtime to load syntax file during ft-based ODL (Junegunn Choi)
    • #419 Avoid multiple syntax enable during Vim startup (Joshua Priddle)
    • #410 Do not load irrelevant syntax files (Junegunn Choi)
    • #407 Rename script-local function to generate better error message (Junegunn Choi)
    • #394 Disable mappings during update (Jeremy Pallats/starcraft.man)
    • #392 Better error message when git executable is not found (Junegunn Choi)
    • #386 Only highlight vim-plug buffers if syntax enabled (Scott Stevenson)
    Source code(tar.gz)
    Source code(zip)
    plug.vim(63.66 KB)
  • 0.8.0(Jan 2, 2016)

    :PlugUpgrade to get the latest vim-plug.

    New features:

    • Added commit option for fine-grained version control
    • Fixed issues with parallel installer on Windows and enabled it by default

    Improvements:

    • Changed PlugSnapshot to create Vim script using the new commit option
    • PlugDiff to show pending updates for plugins locked on commit or on tag
    • Enhanced output format of post-update hooks

    Issues resolved:

    • Fixed Ruby installer to unshallow tagged plugin on update (#350)
    • Fixed output format of Neovim installer (#340)
    • Remapped q in plug window to bd (#336)
    • Fixed freeze in Python installer (#318)
    • Case-sensitive validation of on arguments (#314)
    • Fixed post-update hook not to run on error
    • Fixed for option to load syntax files (#272)
    • Fixed UnicodeDecodeError from Python installer (#262)
    • set nomodifiable on commit preview window (#255)

    Screenshots:

    • New PlugDiff output
    • New PlugSnapshot output
    • Parallel installer on Windows (thanks to @mattn)
    Source code(tar.gz)
    Source code(zip)
Owner
Junegunn Choi
Junegunn Choi
Commandline Python app to Autodownload mediafire folders and files.

Commandline Python app to Autodownload mediafire folders and files.

Tharuk Renuja 3 May 12, 2022
Helping you manage your data science projects sanely.

PyDS CLI Helping you manage your data science projects sanely. Requirements Anaconda/Miniconda/Miniforge/Mambaforge (Mambaforge recommended!) git on y

Eric Ma 16 Apr 25, 2022
Projeto Reverse Shell For Python

Use com sabedoria!!! Modo de uso: Linux (inclui Android e Mac): - apt-get update - apt install python3 (ou "python" apenas) - git clone https://github

1 Jan 03, 2022
Dart Version Manager CLI implemented with Python and Typer.

Dart Version Manager CLI implemented with Python and Typer.

EducUp 6 Jun 26, 2022
Play videos in the terminal.

Termvideo Play videos in the terminal (stdout). python main.py /path/to/video.mp4 Terminal size: -x output_width, -y output_height. Default autodetect

Patrick 11 Jun 13, 2022
A CLI Spigot plugin manager that adheres to Unix conventions and Python best practices.

Spud A cross-platform, Spigot plugin manager that adheres to the Unix philosophy and Python best practices. Some focuses of the project are: Easy and

Tommy Dougiamas 9 Dec 02, 2022
Juniper Command System is a Micro CLI Tool that allows you to manage your files, launch applications, as well as providing extra tools for OS Management.

Juniper Command System is a Micro CLI Tool that allows you to manage your files, launch applications, as well as providing extra tools for OS Management.

Juan Carlos Juárez 1 Feb 02, 2022
A simple CLI tool for tracking Pikud Ha'oref alarms.

Pikud Ha'oref Alarm Tracking A simple CLI tool for tracking Pikud Ha'oref alarms. Polls the unofficial API endpoint every second for incoming alarms.

Yuval Adam 24 Oct 10, 2022
A lightweight terminal-based password manager coded with Python using SQLCipher for SQLite database encryption.

password-manager A lightweight terminal-based password manager coded with Python using SQLCipher for SQLite database encryption. Screenshot Pre-requis

Leonardo de Araujo 15 Oct 15, 2022
Detect secret in source code, scan your repo for leaks. Find secrets with GitGuardian and prevent leaked credentials. GitGuardian is an automated secrets detection & remediation service.

GitGuardian Shield: protect your secrets with GitGuardian GitGuardian shield (ggshield) is a CLI application that runs in your local environment or in

GitGuardian 1.2k Jan 06, 2023
A simple CLI based any Download Tool, that find files and let you stream or download thorugh WebTorrent CLI or Aria or any command tool

Privateer A simple CLI based any Download Tool, that find files and let you stream or download thorugh WebTorrent CLI or Aria or any command tool How

Shreyash Chavan 2 Apr 04, 2022
Darkdump - Search The Deep Web Straight From Your Terminal

Darkdump - Search The Deep Web Straight From Your Terminal About Darkdump Darkdump is a simple script written in Python3.9 in which it allows users to

Josh Schiavone 264 Dec 30, 2022
A library for creating text-based graphs in the terminal

tplot is a Python package for creating text-based graphs. Useful for visualizing data to the terminal or log files.

Jeroen Delcour 164 Dec 14, 2022
A dilligent command line tool to publish ads on ebay-kleinanzeigen.de

kleinanzeigen-bot Feedback and high-quality pull requests are highly welcome! About Installation Usage Development Notes License About kleinanzeigen-b

83 Dec 26, 2022
The WalletsNet CLI helps you connect to WalletsNet

WalletsNet CLI The WalletsNet CLI helps you connect to WalletsNet. With the CLI, you can: Trigger webhook events or resend events for easy testing Tai

WalletsClub 8 Dec 22, 2021
A command line tool to create a graph representing your Ansible playbook tasks and roles

Ansible Playbook Grapher ansible-playbook-grapher is a command line tool to create a graph representing your Ansible playbook plays, tasks and roles.

Mohamed El Mouctar Haidara 424 Dec 20, 2022
spid-sp-test is a SAML2 SPID/CIE Service Provider validation tool that can be executed from the command line.

spid-sp-test spid-sp-test is a SAML2 SPID/CIE Service Provider validation tool that can be executed from the command line. This tool was born by separ

Developers Italia 30 Nov 08, 2022
instant coding answers via the command line

howdoi instant coding answers via the command line Sherlock, your neighborhood command-line sloth sleuth. Are you a hack programmer? Do you find yours

Benjamin Gleitzman 9.8k Jan 08, 2023
lfb (light file browser) is a terminal file browser

lfb (light file browser) is a terminal file browser. The whole program is a mess as of now. In the feature I will remove the need for external dependencies, tidy up the code, make an actual readme, a

2 Apr 09, 2022
QueraToCSV is a simple python CLI project to convert the Quera results file into CSV files.

Quera is an Iranian Learning management system (LMS) that has an online judge for programming languages. Some Iranian universities use it to automate the evaluation of programming assignments.

Amirmahdi Namjoo 16 Nov 11, 2022