2010-10-10 20 views
8

Je veux garder mes configurations Vim et Emacs sous le contrôle de version, mais je ne veux pas vouloir mon dossier de maison entier là (ou plutôt, je le fais, mais il devrait y avoir 3 dépôts séparés) . Avec Emacs, c'est facile. si ~/.emacs n'existe pas, alors ~/.emacs.d/init.el est utilisé comme fichier init. Donc, je peux avoir un dépôt Git séparé en ~/.emacs.d/. Avec Vim, il semble .vimrc peut seulement exister dans le dossier de la maison et non dans ~/vimfiles (l'équivalent de ~/.emacs.d). Est-ce que this est la meilleure façon de mettre sous .vimrc sous le contrôle de version?Mettre .vimrc dans le répertoire vimfiles

Répondre

6

Peut-être déplacer votre .vimrc à ~/.vim/ et symlinking à la maison fera?

Autre, approche beaucoup plus modulaire est de déplacer votre script de démarrage à ~/.vim/plugins/, peut-être créer un sous-répertoire là-bas, et un ou plusieurs scripts d'initialisation: Vim fera un :runtime! plugin/**/*.vim au démarrage.

+0

Votre deuxième suggestion est _precisely_ ce que je vous demandais. –

+0

En fait, j'ai été forcé d'utiliser l'approche 'runtime vimrc' après tout, pour m'assurer que mon script de démarrage est chargé en premier et que Pathogen _before_ Vim ait la possibilité de faire': runtime! plugin/**/*. vim'. –

+1

Oh, ce genre de conditions spéciales peut en effet invalider autrement une si belle technique. Avez-vous lu ': help starting.txt' pour des conseils supplémentaires? Les fichiers proviennent de l'ordre alphabétique, donc renommer votre script de démarrage à '00_startup.vim' pourrait fonctionner? – progo

1

Vous pouvez simplement conserver une sauvegarde dans le contrôle de version et la déployer (c'est-à-dire la déplacer) dans votre répertoire personnel lorsque vous en avez besoin. Vous pouvez écrire un script simple pour gérer toute cette manipulation, donc au moins de manière transparente, il ne semblera pas que vous ayez beaucoup de travail ennuyeux pour le faire avancer et reculer.

2

Ajoute une étape au processus, mais j'ai juste un script bash deploy.sh dans mes paramètres 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 
3

Comme @Progo suggère dans sa réponse, ~/.vimrc paramètres peuvent être déplacés dans un script « plugin » dans un fichier comme ~/.vim/plugin/00rc.vim.

Il y a un certain nombre de choses à garder à l'esprit lors de cette route:

Les utilisateurs et les plugins attendent aussi bien que les paramètres ~/.vimrc ont été chargés avant que les plugins sont tels que décrits dans :help startup. ~/.vim est généralement le premier dans 'runtimepath', mais si l'utilisateur a d'autres plugins dans ~/.vim/plugin, le remplacement .vimrc doit d'abord être lexicographiquement pour s'assurer qu'il est chargé en premier, peut-être ~/.vim/plugin/00rc.vim.

Lorsque le processus de démarrage de vim passe de l'étape 3 'Exécuter les commandes Ex (où .vimrc aurait été lu, de nouveau, voir :help startup) à l'étape 4 « Charger les scripts de plug-in », il fonctionne :runtime! plugin/**/*.vim. Cette commande parcourt 'runtimepath' pour faire correspondre les fichiers à la source, puis commence à les rechercher. Cela signifie que si quelque chose dans ~/.vim/plugin/00rc.vim modifie 'runtimepath' alors il aura été trop tard pour affecter les plugins qui sont exécutés. Cela se produit le plus souvent avec pathogen et dans ce cas, il peut être contourné en ajoutant les lignes suivantes à la fin 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 

Enfin, (encore une fois, comme expliqué dans :help startup), si un fichier ~/.vimrc n'est pas Actuellement, vim va chercher d'autres fichiers comme ~/.exrc il peut donc être nécessaire de les supprimer si leur contenu est indésirable.

7

Mettez juste un mannequin.vimrc en ~ avec une seule ligne:

source ~/path/to/real/vimrc 

fonctionne comme un charme