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
Bonjour Software pypahe is a Python Package Helper command-line tool.

pypahe Bonjour Software pypahe is a Python Package Helper command-line tool. Requirements Docker runtime Usage print the latest available version of a

Bonjour Software 0 Aug 10, 2021
split-manga-pages: a command line utility written in Python that converts your double-page layout manga to single-page layout.

split-manga-pages split-manga-pages is a command line utility written in Python that converts your double-page layout manga (or any images in double p

Christoffer Aakre 3 May 24, 2022
Interactive Python interpreter for executing commands within Node.js

Python Interactive Interactive Python interpreter for executing commands within Node.js. This module provides a means of using the Python interactive

Louis Lefevre 2 Sep 21, 2022
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
An open-source CLI tool for backing up RDS(PostgreSQL) Locally or to Amazon S3 bucket

An open-source CLI tool for backing up RDS(PostgreSQL) Locally or to Amazon S3 bucket

1 Oct 30, 2021
Terminal Colored Text for Python

Terminal Colored Text for Python

R3CKhi-**75 3 Sep 10, 2022
Use case: quick JSON processing/restructuring with jq without terminal

alfred-jq Alfred workflow to conveniently process JQ on clipboard based on a jq query Also available at: packal/jq Use case: quick JSON processing/res

T on Meta Mode 5 Sep 30, 2022
Gamma ion pump QPC ethernet Python library & CLI utility

Unofficial Gamma ion pump ethernet control CLI utility and library This is a mini Python 3 library and utility that exposes some of the functions of t

2 Jul 18, 2022
tox-server is a command line tool which runs tox in a loop and calls it with commands from a remote CLI.

Tox Server tox-server is a command line tool which runs tox in a loop and calls it with commands from a remote CLI. It responds to commands via ZeroMQ

Alexander Rudy 3 Jan 10, 2022
Convert shellcode generated using pe_2_shellcode to cdb format.

pe2shc-to-cdb This tool will convert shellcode generated using pe_to_shellcode to cdb format. Cdb.exe is a LOLBIN which can help evade detection & app

mrd0x 75 Jan 05, 2023
Python CLI utility and library for manipulating SQLite databases

sqlite-utils Python CLI utility and library for manipulating SQLite databases. Some feature highlights Pipe JSON (or CSV or TSV) directly into a new S

Simon Willison 1.1k Jan 04, 2023
Personal and work vim 8 configuration with submodules

vimfiles Windows Vim 8 configuration files based on the recommendations of Ruslan Osipov, Keep Your vimrc file clean and The musings of bluz71. :help

1 Aug 27, 2022
Investing library and command-line interface inspired by the Bogleheads philosophy

Lakshmi (Screenshot of the lak command in action) Background This project is inspired by Bogleheads forum. Bogleheads focus on a simple but powerful p

Sarvjeet Singh 108 Dec 26, 2022
Password manager for the CLI simps.

CLI Password Manager Password manager for the CLI simps. Free software: MIT license

1 Dec 30, 2021
Chat In Terminal - Chat-App in python

Chat In Terminal Hello all. 😉 Sockets and servers are vey important for connection and importantly chatting with others. 😂 😁 I have thought of maki

Shreejan Dolai 5 Nov 17, 2022
Simple tool, to update linux kernel on ubuntu

Kerbswap Simple tool, to update linux kernel on ubuntu Information At the moment, this tool only supports "Ubuntu" distributions, but will be expanded

dword 1 Oct 31, 2021
Magnificent app which corrects your previous console command.

The Fuck The Fuck is a magnificent app, inspired by a @liamosaur tweet, that corrects errors in previous console commands. Is The Fuck too slow? Try t

Vladimir Iakovlev 75k Jan 02, 2023
Bad Apple printed out on the console with Python!

Bad Apple printed out on the console with Python!

CalvinLoke 186 Dec 01, 2022
A CLI for streaming, downloading anime shows. The shows data is indexed through GogoAnime.

Anime-cli A CLI for streaming, downloading anime shows. The shows data is indexed through GogoAnime. Please install mpv video-player for better experi

Chirag Singla 31 Oct 23, 2022
This is my fetch, with ascii arts from neofetch and internet

deadfetch This is my fetch, with ascii arts from neofetch and internet Installation First what you need its python Fedora sudo dnf install python3 sud

DedSec 8 Jan 20, 2022