Respuestas:
En primer lugar, la documentación relevante se puede encontrar :h packages
en la versión Vim8 recién compilada y aquí en Github .
Una primera nota importante es sobre el vocabulario: en Vim8 un paquete se define así:
Un paquete Vim es un directorio que contiene uno o más complementos.
Esto significa que el nuevo administrador de paquetes se creó para ayudar a los usuarios a administrar todos sus complementos en el mismo archivo. El documento enumera las siguientes ventajas:
Un paquete se puede descargar como un archivo y desempaquetado en su propio directorio. Por lo tanto, los archivos no se mezclan con archivos de otros complementos. Eso facilita la actualización y eliminación.
Un paquete puede ser un repositorio git, mercurial, etc. Eso hace que sea realmente fácil de actualizar.
Un paquete puede contener múltiples complementos que dependen unos de otros.
Un paquete puede contener complementos que se cargan automáticamente al inicio y otros que solo se cargan cuando es necesario
:packadd
.
Entonces, la idea es crear una carpeta que contenga todos los complementos con la siguiente estructura:
$HOME/.vim/pack/my-plugins/
start/
foo/
plugin/
foo.vim
syntax/
some.vim
bar/
plugin/
bar.vim
opt/
buzz/
plugin/
buzz.vim
El emplazamiento de la carpeta está definido por la opción packpath
(Ver :h 'packpath'
).
Tenga en cuenta la importancia de la estructura de su carpeta:
start
carpeta contiene complementos que se cargarán automáticamente al inicio.opt
carpeta contiene complementos "opcionales", cargados con el packadd
comando.plugin
, autoload
, doc
, ...) son los que estamos acostumbrados en los plugins.Aquí hay un resumen de las carpetas:
start/foobar/plugin/foo.vim " always loaded, defines commands
start/foobar/plugin/bar.vim " always loaded, defines commands
start/foobar/autoload/foo.vim " loaded when foo command used
start/foobar/doc/foo.txt " help for foo.vim
start/foobar/doc/tags " help tags
opt/fooextra/plugin/extra.vim " optional plugin, defines commands
opt/fooextra/autoload/extra.vim " loaded when extra command used
opt/fooextra/doc/extra.txt " help for extra.vim
opt/fooextra/doc/tags " help tags
Una vez que estos archivos estén en el lugar correcto, al abrir Vim se cargarán los complementos start
y se habilitarán los que opt
estén disponibles :packadd
.
Ahora, ¿puede esta característica reemplazar a los administradores de complementos existentes?
Descargo de responsabilidad: esta parte puede ser un poco obstinada.
Creo que el enfoque de este nuevo administrador de paquetes es realmente diferente al de los administradores de complementos a los que estábamos acostumbrados porque está hecho para administrar uno (o varios) archivos que contienen algunos complementos.
Fuera de la caja, el administrador de paquetes no proporciona funciones para actualizar sus complementos uno por uno, para buscarlos automáticamente desde una dirección de Github o para seleccionar los complementos que desea habilitar / deshabilitar.
No estoy seguro de que sea realmente conveniente usarlo de inmediato (especialmente porque manejar repositorios de control de versiones anidadas puede ser una tarea dolorosa), pero ¿tal vez esta sea la ocasión para hacer que los administradores de complementos sean más eficientes?
Ahora también es posible imaginar mover los complementos existentes para adoptar la estructura requerida por el administrador de paquetes y administrarlos directamente desde el sistema de archivos. Tal vez se cree un contenedor para usar esta nueva característica.
EDITAR Como lo sugiere @Sato Katsura, aquí hay una nota sobre el helptags
comando. El commit Vim8 introdujo dos líneas en el helptag
documento :
:helpt[ags] [++t] {dir} Generate the help tags file(s) for directory {dir}. When {dir} is ALL then all "doc" directories in 'runtimepath' will be used.
Lo que significa que el nuevo administrador de paquetes facilita la generación de las etiquetas de ayuda incluidas en el archivo del usuario. Con el comando único :helptags ALL
se generan todas las etiquetas de ayuda.
:helptags ALL
.
:helptag ALL
echar un vistazo y añadirlo, gracias por la sugerencia!
update
sus complementos o a clean
ellos (eliminando los complementos no utilizados). Para los puntos de bonificación, también utiliza la nueva función de control de trabajos para realizar múltiples actualizaciones en paralelo. Creo que es realmente prometedor, porque mejora los paquetes integrados con una mejor experiencia de usuario.
Para ampliar el "puede reemplazar a los administradores de complementos",
Solía usar Vundle, que era fantástico, pero ahora lo he reemplazado con 18 o más líneas de bash.
Me resulta útil usar subcarpetas en el directorio del paquete para agrupar complementos relacionados. Por ejemplo, "sintaxis" o "rubí".
El ejemplo de bash relevante está debajo. Colocar en un archivo y ejecutarlo.
Discusión adicional sobre el tema en: https://stories.abletech.nz/get-rid-of-your-vim-plugin-manager-7c8ff742f643#.abnjauzgk
#!/usr/bin/env bash
# This file lives in ~/.vim/pack/install.sh
# Remember to add executable: chmod +x ~/.vim/pack/install.sh
#
# Create new folder in ~/.vim/pack that contains a start folder and cd into it.
#
# Arguments:
# package_group, a string folder name to create and change into.
#
# Examples:
# set_group syntax-highlighting
#
function set_group () {
package_group=$1
path="$HOME/.vim/pack/$package_group/start"
mkdir -p "$path"
cd "$path" || exit
}
# Clone or update a git repo in the current directory.
#
# Arguments:
# repo_url, a URL to the git repo.
#
# Examples:
# package https://github.com/tpope/vim-endwise.git
#
function package () {
repo_url=$1
expected_repo=$(basename "$repo_url" .git)
if [ -d "$expected_repo" ]; then
cd "$expected_repo" || exit
result=$(git pull --force)
echo "$expected_repo: $result"
else
echo "$expected_repo: Installing..."
git clone -q "$repo_url"
fi
}
(
set_group ruby
package https://github.com/tpope/vim-rails.git &
package https://github.com/tpope/vim-rake.git &
package https://github.com/tpope/vim-bundler.git &
package https://github.com/tpope/vim-endwise.git &
wait
) &
(
set_group syntax
package https://github.com/kchmck/vim-coffee-script.git &
package https://github.com/tpope/vim-markdown.git &
package https://github.com/ap/vim-css-color.git &
wait
) &
(
set_group colorschemes
package https://github.com/altercation/vim-colors-solarized.git &
wait
) &
wait
La respuesta proporcionada por @statox es muy descriptiva, pero para un nuevo usuario puede ser una distracción, ya que podrían leer el archivo de ayuda directamente. Quiero resumir lo que necesita hacer en punteros.
Crear pack/*/start
directorio bajo cualquiera de los directorios proporcionados por set packpath
. Lo hice en ~/.config/nvim/pack/*/start
. Tenga en cuenta que puede usar cualquier nombre de directorio que desee en lugar de *
pero no puede omitirlo por completo, no sé por qué. Por ejemplo, puede usar el directorio ~/.config/nvim/pack/foo/start
o ~/.config/nvim/pack/bar/start
no ~/.config/nvim/pack/start
.
Vaya al pack/*/start
directorio y clone el paquete allí.
:scriptnames
para verificar si todo está cargado. No se preocupe si no se cargan todas las partes, ya que algunos archivos deben cargarse después de algún enlace, por ejemplo autoload/plugin.vim
.:helptags ALL
para generar etiquetas para todos los documentos de ayuda. Hacer :helptags {dir}
para generar etiquetas para los documentos de ayuda en el directorio dir
. Por ejemplo, si coloca su complemento ~/.config/nvim/pack/foo/plugin_name
, entonces hágalo :helptags ~/.config/nvim/pack/foo/plugin_name/doc
. Eso generará un tags
archivo en el directorio doc del complemento. Si elimina el complemento del directorio, el archivo de etiquetas desaparecerá y vim no encontrará el archivo de ayuda, por lo que no necesita desinstalar el archivo doc manualmente.El nuevo formato puede considerarse como un equivalente de patógeno, por lo que todavía hay espacio para un administrador que pueda descargar los complementos que desee. Hay algunos nuevos administradores de complementos que aprovechan este nuevo formato de paquete, pero aún así hice Vire ya que te dejan el dolor de cabeza de administrarlo vimrc
. Si tiene varias máquinas y desea la misma configuración, Vire lo hace súper fácil.
package
función está destinada a poner fin a las vimballs y los dinosaurios relacionados, no a competir con los administradores de complementos modernos. Es un reemplazo viable parapathogen
, siempre que no confíe enpathogen
las características más oscuras. No hace ningún intento de sustituir, por ejemplo,Vundle
. El concepto de paquete como una colección de complementos está bien pensado y es potencialmente útil, pero me temo que nadie lo usará porque los administradores de complementos modernos no lo admiten. Y los administradores de complementos no lo admitirán porque nadie lo usa. Es un problema de huevo y gallina.