Pregunta

Quiero mantener mis configuraciones de Vim y Emacs bajo control de versiones, pero me no quieren toda mi principal de la carpeta allí (o más bien, lo hago, pero no debe haber 3 repositorios separados). Con Emacs es fácil; si no existe ~/.emacs, entonces ~/.emacs.d/init.el se utiliza como el archivo de inicio. Para que pueda tener una separada Git repo en ~/.emacs.d/. Con Vim, parece .vimrc puede solamente existen en la carpeta de inicio y no en ~/vimfiles (el equivalente a ~/.emacs.d). Es este la mejor manera de poner .vimrc bajo control de versiones?

¿Fue útil?

Solución

Tal vez moviendo el .vimrc a ~/.vim/ y enlaces simbólicos a casa va a hacer?

Otro enfoque, mucho más modular es mover el script de inicio para ~/.vim/plugins/, tal vez crear un subdirectorio allí, y las secuencias de comandos simples o múltiples init:. Vim hará un :runtime! plugin/**/*.vim al iniciar

Otros consejos

Sólo hay que poner un maniquí en .vimrc ~ con una única línea:

source ~/path/to/real/vimrc  

funciona como un encanto

Como @Progo sugiere en su respuesta, la configuración ~/.vimrc se pueden mover en un guión "plugin" dentro de un archivo como ~/.vim/plugin/00rc.vim.

Hay un par de cosas a tener en cuenta cuando se va por este camino:

Usuarios y plugins por igual esperan que la configuración de ~/.vimrc se han cargado antes de plugins son como se describen en :help startup. ~/.vim es generalmente primero en 'runtimepath', pero si el usuario tiene otros plugins en ~/.vim/plugin, la sustitución .vimrc debe ser lexicográficamente primero para asegurarse de que se carga primero, tal vez ~/.vim/plugin/00rc.vim.

Cuando los vim inicio proceso pasa de la etapa 3 'ejecutar comandos Ex' (donde habría sido leído .vimrc, de nuevo, ver :help startup) para el paso 4 'carga las secuencias de comandos Plugin', se ejecuta :runtime! plugin/**/*.vim. Este comando mira a través de 'runtimepath' para casar a los archivos fuente y luego empezar a suministrar. Esto significa que si algo en runtimepath '' ~/.vim/plugin/00rc.vim modifica entonces habrá sido demasiado tarde para afectar la que se ejecutan los plugins. Esto ocurre más comúnmente con patógeno y en ese caso se puede trabajar en torno al añadir las siguientes líneas el final de ~/.vim/plugin/00rc.vim:

" Since this "vimrc" is really run as a plugin, vim has already compiled the
" list of paths/plugins that it wil execute at startup.
" As a result, the pathogen plugins must be run manually.
runtime! bundle/*/plugin/**/*.vim
runtime! bundle/*/after/plugin/**/*.vim

Por último, (de nuevo como se explica en :help startup), si un archivo ~/.vimrc no está presente, Vim buscará otros archivos como ~/.exrc lo que puede ser necesario eliminarlos si sus contenidos no son deseados.

Añade un paso para el proceso, pero acabo de tener una escritura del golpe deploy.sh en mi configuración de vim.

#!/bin/bash

if [ -f ~/.vimrc ] && [ ! -L ~/.vimrc ]
then
    echo "Backing up existing ~/.vimrc to ~/.vimrc.bak"
    mv ~/.vimrc ~/.vimrc.bak
fi
if [ -L ~/.vimrc ]
then
    echo "Already have ~/.vimrc symlink, we're good"
else
    echo "Creating symlink ~/.vimrc, which points to ~/.vim/vimrc"
    ln -s ~/.vim/vimrc ~/.vimrc
fi

git submodule init
git submodule update

Sólo podía mantener una copia de seguridad en el control de versiones y desplegarlo (es decir, moverla) a su directorio cuando lo necesite. Se puede escribir un guión fácil de manejar toda esta manipulación tan siquiera de forma transparente no va a parecer como un montón de trabajo molesto para moverse hacia atrás y adelante.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top