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 startpage configured aesthetically with terminal-esque link formatting

Terminal-y Startpage Setup Clone the repository, then make an unformatted.txt file following the specifications in example.txt. Run format.py Open ind

belkarx 13 May 01, 2022
A terminal client for connecting to hack.chat servers

A terminal client for connecting to hack.chat servers.

V9 2 Sep 21, 2022
googler is a power tool to Google (web, news, videos and site search) from the command-line.

googler is a power tool to Google (web, news, videos and site search) from the command-line.

Terminator X 5.9k Jan 04, 2023
Wordle - Wordle solver with python

wordle what is wordle? https://www.powerlanguage.co.uk/wordle/ preparing $ pip i

shidocchi 0 Jan 24, 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

pre.empt.dev 305 Dec 17, 2022
A **CLI** folder organizer written in Python.

Fsorter Introduction A CLI folder organizer written in Python. Dependencies Before installing, install the following dependencies: Ubuntu/Debain Based

1 Nov 17, 2021
Palm CLI - the tool-belt for data teams

Palm CLI: The extensible CLI at your fingertips Palm is a universal CLI developed to improve the life and work of data professionals. Palm CLI documen

Palmetto 41 Dec 12, 2022
Command line tool for interacting and testing warehouse components

Warehouse debug CLI Example usage for Zumo debugging See all messages queued and handled. Enable by compiling the zumo-controller with -DDEBUG_MODE_EN

1 Jan 03, 2022
texel - Command line interface for reading spreadsheets inside terminal

texel - Command line interface for reading spreadsheets inside terminal. Sometimes, you have to deal with spreadsheets. Those are sad times. Fortunate

128 Dec 19, 2022
A command line tool to create a graph representing your Ansible playbook tasks and roles

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

Mohamed El Mouctar Haidara 424 Dec 20, 2022
Textual: a TUI (Text User Interface) framework for Python inspired by modern web development

Textual Textual is a TUI (Text User Interface) framework for Python inspired by

17.1k Jan 04, 2023
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
Navigate torrents in CLI with Mariner.

Navigate torrents in CLI with Mariner. It offers a simple interface for streamlined experience. No more annoying ads and pop-up windows.

2 Oct 20, 2021
Themes for Windows Terminal

Windows Terminal Themes Preview and copy themes for the new Windows Terminal. Use the project at windowsterminalthemes.dev How to use the themes This

Tom 1.1k Jan 03, 2023
Python library & console tool for controlling Xiaomi smart appliances

python-miio This library (and its accompanying cli tool) can be used to interface with devices using Xiaomi's miIO and MIoT protocols. Getting started

Teemu R. 2.4k Jan 02, 2023
A terminal spreadsheet multitool for discovering and arranging data

VisiData v2.6.1 A terminal interface for exploring and arranging tabular data. VisiData supports tsv, csv, sqlite, json, xlsx (Excel), hdf5, and many

Saul Pwanson 6.2k Jan 04, 2023
Yts-cli-streamer - A CLI movie streaming client which works on yts.mx API written in python

YTSP It is a CLI movie streaming client which works on yts.mx API written in pyt

1 Feb 05, 2022
Browse Hacker News like a haxor: A Hacker News command line interface (CLI).

haxor-news Coworker who sees me looking at something in a browser: "Glad you're not busy; I need you to do this, this, this..." Coworker who sees me s

Donne Martin 3.8k Jan 07, 2023
Python codecs extension featuring CLI tools for encoding/decoding anything

CodExt Encode/decode anything. This library extends the native codecs library (namely for adding new custom encodings and character mappings) and prov

Alex 210 Dec 30, 2022
A simple command line tool written in python to manage a to-do list

A simple command line tool written in python to manage a to-do list Dependencies: python Commands: todolist (-a | --add) [(-p | --priority)] [(-l | --

edwloef 0 Nov 02, 2021