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
A lightweight Python module and command-line tool for generating NATO APP-6(D) compliant military symbols from both ID codes and natural language names

Python military symbols This is a lightweight Python module, including a command-line script, to generate NATO APP-6(D) compliant military symbol icon

Nick Royer 5 Dec 27, 2022
Automated CI toolchain to produce precompiled opencv-python, opencv-python-headless, opencv-contrib-python and opencv-contrib-python-headless packages.

OpenCV on Wheels Pre-built CPU-only OpenCV packages for Python. Check the manual build section if you wish to compile the bindings from source to enab

OpenCV 3.2k Jan 04, 2023
Simple script to download OTA packages from Realme's endpoint.

Realme OTA Downloader CLI tool (based on this C# program) to create requests to the Realme's endpoint. Requirements Python 3.9. pycryptodome. Installa

Roger Ortiz 64 Dec 28, 2022
Cthulhu is a simple python CLI application that streams torrents directly from 1337x.

Cthulhu is a simple python CLI application that facilitates the streaming of torrents directly from 1337x. It uses webtorrent to stream video

Raiyan 27 Dec 27, 2022
Runs a command in P4wnP1 and displays the output on OLED screen (SH1106)

p4wnp1-oled-terminal Runs a command in P4wnP1 and displays the output on OLED screen (SH1106) Works on Raspberry Pi Zero 2 W Tested successfully on RP

PawnSolo 1 Dec 14, 2021
A CLI Password Manager made using Python and Postgresql database.

ManageMyPasswords (CLI Edition) A CLI Password Manager made using Python and Postgresql database. Quick Start Guide First Clone The Project git clone

Imira Randeniya 1 Sep 11, 2022
🌈 Beautify your command line interfaces.

Basics Install: pip install iridi Usage: import iridi # Create gradient text # iridi.print(message, colors, options) # Ask for input with gradient

Conrad Crawford 39 Oct 20, 2022
⚙ A lightweight command line interface library for creating commands.

⚙ A lightweight command line interface library for creating cli commands. About | Installation | Usage | Features | Contributors | License About Next:

Serum 16 Sep 25, 2022
A simple CLI productivity tool to quickly display the syntax of a desired piece of code

Iforgor Iforgor is a customisable and easy to use command line tool to manage code samples. It's a good way to quickly get your hand on syntax you don

Solaris 21 Jan 03, 2023
Dart Version Manager CLI implemented with Python and Typer.

Dart Version Manager Dart Version Manager CLI implemented with Python and Typer Usage: $ dvm [OPTIONS] COMMAND [ARGS]... Options: --install-completion

EducUp 6 Jun 26, 2022
Command Line (CLI) Application to automate creation of tasks in Redmine, issues on Github and the sync process of them.

Task Manager Automation Tool (TMAT) CLI Command Line (CLI) Application to automate creation of tasks in Redmine, issues on Github and the sync process

Tiamat 5 Apr 12, 2022
Convert shellcode into :sparkles: different :sparkles: formats!

Bluffy Convert shellcode into ✨ different ✨ formats! Bluffy is a utility which was used in experiments to bypass Anti-Virus products (statically) by f

AD995 305 Dec 17, 2022
A simple automation script that logs into your kra account and files your taxes with one command

EASY_TAX A simple automation script that logs into your kra account and files your taxes with one command Currently works for Chrome users. Will creat

leon koech 13 Sep 23, 2021
Container images for portable development environments

Docker Dev Spin up a container to develop from anywhere! To run, just: docker run -ti aghost7/nodejs-dev:boron tmux new Alternatively, if on Linux: p

Jonathan Boudreau 163 Dec 22, 2022
Install python modules from pypi from a previous date in history

pip-rewind is a command-line tool that can rewind pypi module versions (given as command-line arguments or read from a requirements.txt file) to a previous date in time.

Amar Paul 4 Jul 03, 2021
Easily turn single threaded command line applications into a fast, multi-threaded application with CIDR and glob support.

Easily turn single threaded command line applications into a fast, multi-threaded application with CIDR and glob support.

Michael Skelton 1k Jan 07, 2023
Ntfy - 🖥️📱🔔 A utility for sending notifications, on demand and when commands finish.

About ntfy ntfy brings notification to your shell. It can automatically provide desktop notifications when long running commands finish or it can send

Daniel Schep 4.5k Jan 01, 2023
An interactive aquarium for your terminal.

sipedon An interactive aquarium for your terminal, written using pytermgui. The project got its name from the Common Watersnake, also known as Nerodia

17 Nov 07, 2022
This is a command line program to play cricket made using Python.

SimpleCricketPython This is a command line program to play cricket made using Python How it works First you have the option of selecting whether you

Imira Randeniya 1 Sep 11, 2022
💥 Share files easily over your local network from the terminal!

Fileshare 📨 Share files easily over your local network from the terminal! 📨 Installation # clone the repo $ git clone https://github.com/dopevog/fil

Dopevog 11 Sep 10, 2021