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
Gamestonk Terminal is an awesome stock and crypto market terminal

Gamestonk Terminal is an awesome stock and crypto market terminal. A FOSS alternative to Bloomberg Terminal.

Gamestonk Terminal 18.6k Jan 03, 2023
ctree - command line christmas tree

ctree ctree - command line christmas tree It is small python script that prints a christmas tree in terminal. It is colourful and always gives you a d

15 Aug 15, 2022
Bear-Shell is a shell based in the terminal or command prompt.

Bear-Shell is a shell based in the terminal or command prompt. You can navigate files, run python files, create files via the BearUtils text editor, and a lot more coming up!

MichaelBear 6 Dec 25, 2021
CLI tool to show the current crypto balance

CryptoBoard The simple python CLI tool for one currency to show the current crypto balance yours purchases. That's all. Data source is from https://ww

John 2 Nov 18, 2021
f90nml - A Fortran namelist parser, generator, and editor

f90nml - A Fortran namelist parser, generator, and editor A Python module and command line tool for parsing Fortran namelist files Documentation The c

Marshall Ward 110 Dec 14, 2022
Apple Silicon 'top' CLI

asitop pip install asitop What A nvtop/htop style/inspired command line tool for Apple Silicon (aka M1) Macs. Note that it requires sudo to run due to

Timothy Liu 1.2k Dec 31, 2022
Collection of useful command line utilities and snippets to help you organise your workspace and improve workflow.

Collection of useful command line utilities and snippets to help you organise your workspace and improve workflow.

Dominik Tarnowski 3 Dec 26, 2021
Command line interface for unasync

CLI for unasync Command line interface for unasync Getting started Install Run the following command to install the package with pip: pip install unas

Leynier Gutiérrez González 3 Apr 04, 2022
This is a Command Line program to interact with your NFTs, Cryptocurrencies etc

This is a Command Line program to interact with your NFTs, Cryptocurrencies etc. via the ThirdWeb Platform. This is just a fun little project that I made to be able to connect to blockchains and Web3

Arpan Pandey 5 Oct 02, 2022
Get Air Quality Index for your city/country 😷

Air Quality Index CLI Get Air Quality index for your City. Installation $ pip install air-quality-cli Contents Air Quality Index CLI Installation Cont

Yankee 40 Oct 21, 2022
Pequeno joguinho pra você rodar no seu terminal

JokenPython Pequeno joguinho pra você rodar no seu terminal Olá! Joguinho legal pra vc rodar no seu terminal!! (rode no terminal, pra melhor experienc

Scott 4 Nov 25, 2021
CLI tool to view your VIT timetable from terminal anytime!

VITime CLI tool to view your timetable from terminal anytime! Table of contents Preview Installation PyPI Source code Updates Setting up Add timetable

16 Oct 04, 2022
Several tools that can be added to your `PATH` to make your life easier.

CK-CLI Tools Several tools that can be added to your PATH to make your life easier. prettypath Prints the $PATH variable in a human-readable way. It a

Christopher Kumm 2 Apr 21, 2022
A cd command that learns - easily navigate directories from the command line

NAME autojump - a faster way to navigate your filesystem DESCRIPTION autojump is a faster way to navigate your filesystem. It works by maintaining a d

William Ting 14.5k Jan 03, 2023
A CLI tools to get you started on any project in any language

Any Template A faster easier to Quick start any programming project. Installation pip3 install any-template Features No third party dependencies. Tem

Adwaith Rajesh 2 Jan 11, 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
🌍 Harness the power of whatsmydns from the command-line.

chkdns Harness the power of whatsmydns from the command-line. Installing with pip pip install chkdns Run chkdns --host github.com Alternatively you ca

Craig Gumbley 3 Oct 29, 2022
Fun project to generate The Matrix Code effect on you terminal.

Fun project to generate The Matrix Code effect on you terminal.

Henrique Bastos 11 Jul 13, 2022
A minimalist Vim plugin manager.

A minimalist Vim plugin manager. Pros. Easy to set up: Single file. No boilerplate code required. Easy to use: Concise, intuitive syntax Super-fast pa

Junegunn Choi 30.2k Jan 08, 2023
A Python package for a basic CLI and GUI user interface

Organizer CLI Organizer CLI is a python command line tool that goes through a given directory and organizes all un-folder bound files into folders by

Caltech Library 12 Mar 25, 2022