Un administrador de complementos de Vim minimalista.
Descargue plug.vim y colóquelo en el directorio "autoload".
curl -fLo ~ /.vim/autoload/plug.vim --create-dirs
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Puede automatizar el proceso colocando el comando en su archivo de configuración de Vim como se sugiere aquí.
iwr - useb https: // raw.githubusercontent.com / junegunn / vim - plug / master / plug.vim |`
ni $HOME / vimfiles / autoload / plug.vim - Force
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 '
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
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
Agregue una sección vim-plug a su ~/.vimrc
(o ~/.config/nvim/init.vim
para Neovim)
call plug#begin()
Plug
call plug#end()
Por ejemplo,
call plug#begin ()
" List your plugins here
Plug ' tpope/vim-sensible '
call plug#end ()
Vuelva a cargar el archivo o reinicie Vim, entonces podrá,
:PlugInstall
para instalar los complementos:PlugUpdate
para instalar o actualizar los complementos:PlugDiff
para revisar los cambios de la última actualización:PlugClean
para eliminar complementos que ya no están en la lista Nota
Eso es básicamente todo lo que necesitas saber para comenzar. El resto del documento es para usuarios avanzados que desean saber más sobre las funciones y opciones.
Consejo
plug#end()
ejecuta automáticamente filetype plugin indent on
y syntax enable
. Creemos que este es un buen valor predeterminado para la mayoría de los usuarios, pero si no desea este comportamiento, puede revertir la configuración después de la llamada.
call plug#end ()
filetype indent off " Disable file-type-specific indentation
syntax off " Disable syntax highlighting
Los siguientes ejemplos demuestran las características adicionales de vim-plug.
call plug#begin ()
" The default plugin directory will be as follows:
" - Vim (Linux/macOS): '~/.vim/plugged'
" - Vim (Windows): '~/vimfiles/plugged'
" - Neovim (Linux/macOS/Windows): stdpath('data') . '/plugged'
" You can specify a custom plugin directory by passing it as the argument
" - e.g. `call plug#begin('~/.vim/plugged')`
" - Avoid using standard Vim directory names like 'plugin'
" Make sure you use single quotes
" Shorthand notation for GitHub; translates to https://github.com/junegunn/seoul256.vim.git
Plug ' junegunn/seoul256.vim '
" Any valid git URL is allowed
Plug ' https://github.com/junegunn/vim-easy-align.git '
" Using a tagged release; wildcard allowed (requires git 1.9.2 or above)
Plug ' fatih/vim-go ' , { ' tag ' : ' * ' }
" Using a non-default branch
Plug ' neoclide/coc.nvim ' , { ' branch ' : ' release ' }
" Use 'dir' option to install plugin in a non-default directory
Plug ' junegunn/fzf ' , { ' dir ' : ' ~/.fzf ' }
" Post-update hook: run a shell command after installing or updating the plugin
Plug ' junegunn/fzf ' , { ' dir ' : ' ~/.fzf ' , ' do ' : ' ./install --all ' }
" Post-update hook can be a lambda expression
Plug ' junegunn/fzf ' , { ' do ' : { - > fzf#install () } }
" If the vim plugin is in a subdirectory, use 'rtp' option to specify its path
Plug ' nsf/gocode ' , { ' rtp ' : ' vim ' }
" On-demand loading: loaded when the specified command is executed
Plug ' preservim/nerdtree ' , { ' on ' : ' NERDTreeToggle ' }
" On-demand loading: loaded when a file with a specific file type is opened
Plug ' tpope/vim-fireplace ' , { ' for ' : ' clojure ' }
" Unmanaged plugin (manually installed and updated)
Plug ' ~/my-prototype-plugin '
" Call plug#end to update &runtimepath and initialize the plugin system.
" - It automatically executes `filetype plugin indent on` and `syntax enable`
call plug#end ()
" You can revert the settings after the call like so:
" filetype indent off " Disable file-type-specific indentation
" syntax off " Disable syntax highlighting
" Color schemes should be loaded after plug#end().
" We prepend it with 'silent!' to ignore errors when it's not yet installed.
silent ! colorscheme seoul256
En Neovim, puede escribir su configuración en un archivo de script Lua llamado init.lua
. El siguiente código es el script Lua equivalente al ejemplo de script Vim anterior.
local vim = vim
local Plug = vim . fn [ ' plug# ' ]
vim . call ( ' plug#begin ' )
-- Shorthand notation for GitHub; translates to https://github.com/junegunn/seoul256.vim.git
Plug ( ' junegunn/seoul256.vim ' )
-- Any valid git URL is allowed
Plug ( ' https://github.com/junegunn/vim-easy-align.git ' )
-- Using a tagged release; wildcard allowed (requires git 1.9.2 or above)
Plug ( ' fatih/vim-go ' , { [ ' tag ' ] = ' * ' })
-- Using a non-default branch
Plug ( ' neoclide/coc.nvim ' , { [ ' branch ' ] = ' release ' })
-- Use 'dir' option to install plugin in a non-default directory
Plug ( ' junegunn/fzf ' , { [ ' dir ' ] = ' ~/.fzf ' })
-- Post-update hook: run a shell command after installing or updating the plugin
Plug ( ' junegunn/fzf ' , { [ ' dir ' ] = ' ~/.fzf ' , [ ' do ' ] = ' ./install --all ' })
-- Post-update hook can be a lambda expression
Plug ( ' junegunn/fzf ' , { [ ' do ' ] = function ()
vim . fn [ ' fzf#install ' ]()
end })
-- If the vim plugin is in a subdirectory, use 'rtp' option to specify its path
Plug ( ' nsf/gocode ' , { [ ' rtp ' ] = ' vim ' })
-- On-demand loading: loaded when the specified command is executed
Plug ( ' preservim/nerdtree ' , { [ ' on ' ] = ' NERDTreeToggle ' })
-- On-demand loading: loaded when a file with a specific file type is opened
Plug ( ' tpope/vim-fireplace ' , { [ ' for ' ] = ' clojure ' })
-- Unmanaged plugin (manually installed and updated)
Plug ( ' ~/my-prototype-plugin ' )
vim . call ( ' plug#end ' )
-- Color schemes should be loaded after plug#end().
-- We prepend it with 'silent!' to ignore errors when it's not yet installed.
vim . cmd ( ' silent! colorscheme seoul256 ' )
Dominio | Descripción |
---|---|
PlugInstall [name ...] [#threads] | Instalar complementos |
PlugUpdate [name ...] [#threads] | Instalar o actualizar complementos |
PlugClean[!] | Elimine los complementos no listados (la versión bang se limpiará sin que se le solicite) |
PlugUpgrade | Actualizar vim-plug en sí |
PlugStatus | Verificar el estado de los complementos |
PlugDiff | Examinar los cambios de la actualización anterior y los cambios pendientes. |
PlugSnapshot[!] [output path] | Generar script para restaurar la instantánea actual de los complementos |
Plug
Opción | Descripción |
---|---|
branch / tag / commit | Rama/etiqueta/compromiso del repositorio a utilizar |
rtp | Subdirectorio que contiene el complemento Vim |
dir | Directorio personalizado para el complemento |
as | Utilice un nombre diferente para el complemento |
do | Gancho posterior a la actualización (cadena o funcref) |
on | Carga bajo demanda: Comandos o -mappings |
for | Carga bajo demanda: tipos de archivos |
frozen | No eliminar ni actualizar a menos que se especifique explícitamente |
Bandera | Por defecto | Descripción |
---|---|---|
g:plug_threads | 16 | Número predeterminado de subprocesos a utilizar |
g:plug_timeout | 60 | Límite de tiempo de cada tarea en segundos ( Ruby & Python ) |
g:plug_retries | 2 | Número de reintentos en caso de tiempo de espera ( Ruby y Python ) |
g:plug_shallow | 1 | Usar clon superficial |
g:plug_window | -tabnew | Comando para abrir la ventana del complemento |
g:plug_pwindow | vertical rightbelow new | Comando para abrir la ventana de vista previa en PlugDiff |
g:plug_url_format | https://git::@github.com/%s.git | formato printf para crear la URL del repositorio (solo se aplica a los comandos Plug posteriores) |
D
- PlugDiff
S
- PlugStatus
R
: reintentar tareas de instalación o actualización fallidasU
- Actualizar complementos en el rango seleccionadoq
- Cancelar las tareas en ejecución o cerrar la ventana:PlugStatus
L
- Cargar complemento:PlugDiff
X
- Revertir la actualización Hay algunos complementos que requieren pasos adicionales después de la instalación o actualización. En ese caso, utilice la opción do
para describir la tarea a realizar.
Plug ' Shougo/vimproc.vim ' , { ' do ' : ' make ' }
Plug ' ycm-core/YouCompleteMe ' , { ' do ' : ' ./install.py ' }
Si el valor comienza con :
, será reconocido como un comando de Vim.
Plug ' fatih/vim-go ' , { ' do ' : ' :GoInstallBinaries ' }
Para llamar a una función de Vim, puedes pasar una expresión lambda como esta:
Plug ' junegunn/fzf ' , { ' do ' : { - > fzf#install () } }
Si necesita más control, puede pasar una referencia a una función de Vim que tome un argumento de diccionario.
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 ' ) }
Se ejecuta un enlace posterior a la actualización dentro del directorio del complemento y solo se ejecuta cuando el repositorio ha cambiado, pero puede forzarlo a ejecutarse incondicionalmente con las versiones bang de los comandos: PlugInstall!
y PlugUpdate!
.
Consejo
Asegúrese de evitar las BAR y las comillas dobles cuando escriba la opción do
en línea, ya que se reconocen erróneamente como separador de comandos o el inicio del comentario final.
Plug ' junegunn/fzf ' , { ' do ' : ' yes | ./install ' }
Pero puedes evitar el escape si extraes la especificación en línea usando una variable (o cualquier expresión de script de Vim) de la siguiente manera:
let g: fzf_install = ' yes | ./install '
Plug ' junegunn/fzf ' , { ' do ' : g: fzf_install }
PlugInstall!
y PlugUpdate!
El instalador sigue los siguientes pasos al instalar/actualizar un complemento:
git clone
o git fetch
desde su origengit merge
rama remota Los comandos con !
El sufijo garantiza que todos los pasos se ejecuten incondicionalmente.
" NERD tree will be loaded on the first invocation of NERDTreeToggle command
Plug ' preservim/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! '
Nota
Probablemente no sea necesario.
Un complemento de Vim implementado correctamente ya debería cargarse de forma diferida sin la ayuda de un administrador de complementos ( :help autoload
). Así que hay pocos casos en los que estas opciones realmente tengan mucho sentido. Hacer que un complemento se cargue más rápido es responsabilidad del desarrollador del complemento, no del usuario. Si encuentra un complemento que tarda demasiado en cargarse, considere abrir un problema en el rastreador de problemas del complemento.
Déjame darte una perspectiva. El tiempo que lleva cargar un complemento suele ser inferior a 2 o 3 ms en las computadoras modernas. Entonces, a menos que utilice una gran cantidad de complementos, es poco probable que ahorre más de 50 ms. Si ha pasado una hora configurando cuidadosamente las opciones para reducir 50 ms, tendrá que iniciar Vim 72.000 veces sólo para alcanzar el punto de equilibrio. Deberías preguntarte si es una buena inversión de tu tiempo.
Asegúrese de abordar el problema correcto desglosando el tiempo de inicio de Vim usando --startuptime
.
vim --startuptime /tmp/log
La carga bajo demanda sólo debe utilizarse como último recurso. Básicamente es una solución complicada y no siempre se garantiza que funcione.
Consejo
Puede pasar una lista vacía a la opción on
o for
para deshabilitar la carga del complemento. Puede cargar manualmente el complemento usando la función plug#load(NAMES...)
.
Consulte https://github.com/junegunn/vim-plug/wiki/tips#loading-plugins-manually
MIT