Sé que muchas personas almacenan su .vimrc en GitHub para facilitar el trabajo en máquinas nuevas, y eso tiene mucho sentido para mí. Sin embargo, incluir complementos es problemático, porque los complementos que uso ya son repositorios de git. ¿Cómo se puede crear un repositorio que rastree tanto su .vimrc como los complementos que se puedan instalar?
vimrc
plugin-system
Tom
fuente
fuente
Respuestas:
Cómo tratar con repositorios dentro de repositorios ha sido una pregunta continua con git. Los submódulos de Git son una forma de abordar la situación, a expensas de agregar un poco más de complejidad para realizar un seguimiento. El sitio git tiene una introducción a los submódulos .
La idea básica es mantener una referencia a otro repositorio git asociado con una ruta en su repositorio. Estas referencias se almacenan en un archivo
.gitmodules
en la raíz de su repositorio (que es administrado por git, así que déjelo en paz). Parte de la complejidad entra en juego al clonar un repositorio que tiene submódulos: debegit submodule init
crear explícitamente el.gitmodules
archivo y luegogit submodule update
clonar los submódulos.Aquí hay un tutorial sobre cómo agregaré un nuevo complemento vim a mi repositorio de archivos de puntos (me he
~/.vim/
alias a este repositorio.vim/
) usando un submódulo:Después de esto
submodule add
, agit status
mostrará que ha modificado (o creado) el.gitmodules
archivo, con algo como esto:También debería mostrarse
.vim/bundle/vim-elixir
como un nuevo archivo. Git trata esa ruta especialmente ahora: es un directorio normal en su sistema de archivos (por lo que vim lo carga normalmente), perogit diff
lo tratará como una confirmación específica de su repositorio. Al mirar diffs o registros para esa ruta (por ejemplogit log -1 -u .vim/bundle/vim-elixir
), git lo mostrará como una cadena de una línea como esta:La actualización a la versión más reciente de los plugins corresponde a entrar en el repositorio del submódulo y la salida a una nueva confirmación, y luego cometer que a su repositorio:
fuente
No necesita almacenar complementos en su VCS; También puede usar un administrador de paquetes Vim. Desde ayer, uso vim-plug :
Puede definir complementos en su vimrc así:
Luego reinicie Vim y luego instale complementos con:
O bien, puede agregar este fragmento de las preguntas frecuentes a su archivo vimrc antes de la
plug#begin()
llamada:Esto colocará los complementos
~/.vim/plugged
. No necesita mantener este archivo en su VCS . Si desea usar este vimrc en otra máquina, solo llame:PlugInstall
a esa máquina.para eliminar un complemento, elimínelo del archivo vimrc y ejecute:
Tenga en cuenta que vim-plug no admite la instalación de scripts desde el sitio web de scripts de Vim, pero esos scripts se reflejan en GitHub , por lo que no hay necesidad de hacerlo.
También hay algunas ventajas adicionales, como la actualización más fácil del complemento y la carga a pedido para un mejor rendimiento. Tampoco corre el riesgo de violar los términos de licencia de los complementos que está distribuyendo con sus archivos vimrc.
Ver también:
fuente
Guardo mi vimrc en github y los complementos como submódulos de mi repositorio.
En el archivo readme.md pongo un forro que extrae el repositorio y luego ejecuta el script de configuración, de esta manera puedo copiar una línea en un editor y configura todo. Hace un poco más que solo vim (pero no mucho).
https://github.com/Loki-Astari/UnixConfig
Para usarlo:
PD. Dispuesto a tomar cualquier consejo (como lo hice hace años y no lo he tocado desde entonces).
Nota: Mi parte favorita es que también configura git y lo configura para usar vim como la herramienta diff para git. Vimdiff es la mejor herramienta de diferencias.
fuente
Si desea seguir con Pathogen, una forma podría ser usar submódulos Git . Cuando agrega un submódulo, git lo reconoce como de otro repositorio y deja solo su contenido (a menos que se haya cambiado, en cuyo caso, se mostrará como contenido no rastreado cuando lo haga
git status
). Si tiene todos sus complementos basados en Githubbundle/
, entonces agregarlos como submódulos es una tarea bastante simple con un buen shell:Puede echar un vistazo a cómo se muestran los submódulos en mi repositorio vimrc .
Si agrega un archivo a un submódulo o realiza algunos cambios que no afectan el repositorio,
git status
seguirá quejándose de que el submódulo tiene cambios no confirmados o archivos no rastreados. Puede hacer que git ignore dichos cambios agregandoignore = dirty
a la configuración del submódulo en el.gitmodules
archivo. Por ejemplo:Un beneficio de los submódulos es que la revisión del submódulo se agrega al repositorio git, de modo que
git init
automáticamente se encarga de verificar esa revisión en particular. Puede tirar eso y decirle a git que ignore los submódulos una vez que los haya agregado al agregarlosignore = all
a su configuración en el.gitmodules
archivo. Por ejemplo:Por último, ¡un comando para actualizarlos a todos!
Palabra de advertencia: soy nuevo en submódulos. No estoy realmente seguro de cómo se comportan.
fuente
Puede agregar esta línea a su
.gitignore
para ignorar todos sus complementos y no confirmarlos:Además, dijiste que es problemático que incluya el código del complemento porque ya son repositorios de github. Supongo que quiere decir que no desea duplicar el código, pero he oído decir que debe continuar y duplicar el código que es una dependencia para que siempre pueda volver a un punto en particular en su código y saber que funcionará. Aquí hay algunos artículos de James Shore que hablan de eso: http://www.letscodejavascript.com/v3/blog/2014/12/the_reliable_build , http://www.letscodejavascript.com/v3/blog/2014/03/ the_npm_debacle . Él está hablando de código de programación y npm (a diferencia de vim), pero creo que el argumento aún se aplica, desea un entorno confiable para codificar o escribir.
fuente