web-dev-qa-db-fra.com

Ajout de votre fichier .vim ~/.vimrc à github (fichiers de points)

J'ai vu quelques personnes qui ont git repos avec leurs fichiers de points. Je me demande s'ils viennent 

cd ~/
git init
git add .vimrc
// etc

? Et puis c'est comme ça qu'ils le tiennent à jour? Ou est-ce qu'ils font probablement des copies et les synchronisent?

Quelle stratégie recommandez-vous ou utilisez-vous? Surtout ne veux pas commettre et pousser tout mon ~ /

Merci

53
John Tomson

Faire un dépôt git de votre maison est probablement une mauvaise idée (vous perdriez plus de temps à créer votre fichier .gitignore qu'à faire ce que vous voulez vraiment faire).

Je suggère d'utiliser un répertoire git distinct pour vos fichiers de points (par exemple, ~/git/dotfiles) et de créer des liens symboliques vers votre maison (par exemple, ln -s ~/git/dotfiles/.vim ~/.vim, etc.).

Si vous ne souhaitez pas créer manuellement des liens symboliques chaque fois que vous souhaitez installer vos fichiers de données, vous pouvez utiliser un script du type suivant: https://github.com/gibfahn/dot/blob/master/link .

71
sitaktif

J'ai mon répertoire ~/.vim sous contrôle de version et ma "vraie" vimrc (celle avec tous mes paramètres) à l'intérieur de ce répertoire, à ~/.vim/vimrc:

~/
---- .vim/
---- ---- (plugins and stuff)
---- ---- vimrc
---- .vimrc

Mon ~/.vimrc normal n'a qu'une seule ligne:

runtime vimrc

Pas besoin de créer des liens symboliques ou quoi que ce soit.

Voici comment je voudrais pousser ma configuration sur une nouvelle machine sur laquelle Git a déjà été installé:

$ cd
$ git clone [email protected]:romainl/dotvim.git .vim
$ echo "runtime vimrc" > .vimrc

Ce qui suit est l'ensemble du processus de création. Je suppose que vous avez créé un compte et un référentiel nommé "vimconfig" sur Github et que vous avez déjà un ~/.vimrc fabriqué avec amour et un ~/.vim/ bien organisé.

$ cd
$ mv .vimrc .vim/vimrc
$ echo "runtime vimrc" > .vimrc
$ cd .vim
$ git init
$ echo "This is my Vim config." > README
$ git add *
$ git commit -m "My Vim config is versioned."
$ git remote add Origin https://github.com/username/vimconfig.git
$ git Push Origin master

À ce stade, vous devriez avoir le même contenu sur Github et dans votre référentiel local.

Vous gérez ce référentiel normalement et poussez vos commits lorsque vous êtes prêt. Simple.

Notez que l’ensemble de l’opération Github n’est utile que si vous avez besoin de/souhaitez synchroniser votre configuration sur plusieurs machines ou si, d’une manière ou d’une autre, vous avez besoin/vous voulez la partager avec d’autres. Sinon, utiliser GitHub ne sert à rien.

(modifier)

Vim 7.4 a introduit un nouveau schéma très utile: il recherche le ~/.vimrc habituel et aussi le ~/.vim/vimrc, ce qui représente encore moins de travail pour vous:

$ cd .vim
$ git init
$ echo "This is my Vim config." > README
$ git add *
$ git commit -m "My Vim config is versioned."
$ git remote add Origin https://github.com/username/vimconfig.git
$ git Push Origin master

Bien sûr, la stratégie que j'ai suggérée au départ est toujours valable si vous devez gérer des versions mixtes de Vim: Vim sait quoi faire et ne risque pas de se perdre dans une boucle sans fin.

49
romainl

J'ai déjà un dossier "bundle" où je mets tous mes plugins à charger via Pathogen . J'ai donc fait de ce dossier mon dossier git (avec les plugins en tant que sous-modules) et y ai mis mon vimrc.

Dans le .vimrc officiel, j'écris:

let $MYVIMRC="<path_to_vimrc_in_bundle_folder>"
source $MYVIMRC
...
call pathogen#infect()

et je ne suis pas la version!

Cela me permet de partager ma configuration entre ma machine Linux à la maison et ma machine Windows au travail. Je peux également définir les configurations officielles .vimrc spécifiques à la machine, ou celles que je ne souhaite pas rendre accessibles au public (comme les profils dbext contenant les noms d'utilisateur et les mots de passe ...).

3
Idan Arye

Voici une solution agnostique pour les plates-formes et Shell sans dépendances autres que le shell compatible bourne dont vous disposez (bash, zsh, ksh, etc.). Cela fonctionne sur mac, linux et windows:

dotsys

Il synchronisera automatiquement les modifications apportées à vos fichiers de points avec github et plusieurs machines, ainsi que de nombreuses autres fonctionnalités.

1
arctelix

Découvrez la solution de steakcobra dans Hacker News :

git init --bare $HOME/.myconf
alias config='/usr/bin/git --git-dir=$HOME/.myconf/ --work-tree=$HOME'
config config status.showUntrackedFiles no

~/.myconf est l'emplacement du référentiel bare git. Ensuite, tous les fichiers dans $HOME peuvent être versionnés de la manière suivante:

config status
config add .vimrc
config commit -m "Add vimrc"
config add .config/redshift.conf
config commit -m "Add redshift config"
config Push

Si vous avez besoin de plus amples explications, Nikola Paolucci a fourni une excellente explication .

0
Ian Canino