38 votes

Comment transporter le fichier .vimrc lors de la connexion SSH?

Mon travail consiste généralement à utiliser SSH pour me connecter à différentes machines, puis à utiliser vim pour modifier des fichiers sur ces machines. Le problème est que je dois constamment copier mon fichier .vimrc partout. C'est très ennuyeux d'ouvrir vim et de ne pas avoir de paramètres. Est-il possible de transporter mes paramètres vim avec moi de machine en machine sans les copier manuellement partout?

1voto

PeterCo Points 3680

sshrc résout ce problème. Vous placez votre .vimrc dans ~/.sshrc.d/ puis ajoutez export VIMINIT="let \$MYVIMRC='$SSHHOME/.sshrc.d/.vimrc' | source \$MYVIMRC" à `/.sshrc.

1voto

Glenn W Points 11

J'ai écrit un outil simple pour cela qui vous permettra de transporter nativement votre fichier .vimrc chaque fois que vous vous connectez en SSH, en utilisant les options de configuration intégrées à SSHd de manière non standard.

Aucune svn, scp, copier/coller, etc. supplémentaire requis.

C'est simple, léger et fonctionne par défaut sur toutes les configurations de serveur que j'ai testées jusqu'à présent.

https://github.com/gWOLF3/viSSHous

0voto

Apoc Points 1

Utiliser la variable VIMINIT :

export VIMINIT='set number'

et la transmettre au serveur distant :

ssh remoteuser@remoteserver -o SendEnv=LC_VIMINIT -t 'export VIMINIT=$LC_VIMINIT && bash'

est facile en utilisant les fichiers .bash_profiles ou .bashrc

export VIMINIT='
set number
'

export LC_VIMINIT=$VIMINIT

sshh (){
ssh -o SendEnv=LC_VIMINIT $1 -t 'export VIMINIT=$LC_VIMINIT && bash'

Essayez maintenant de lancer vim sur le serveur distant en utilisant sshh pour la connexion :

sshh remoteuser@remoteserver

Si vous le souhaitez, vous pouvez également emmener vos plugins sur le serveur distant :

export LC_VIMINIT="
set number
set nocompatible
filetype off
set rtp+=~/.[USER]_vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'

set shell=/bin/bash
call vundle#end()
filetype plugin indent on
"

export VIMINIT=$LC_VIMINIT

sshh (){
        if [[ $1 ]]; then
                ssh-copy-id $1 &>/dev/null &&
                rsync -lzr --partial --del ~/.[USER]_vim ${1}: &&
                ssh -o SendEnv=LC_VIMINIT $1 -t 'export VIMINIT=$LC_VIMINIT && bash';
        else
                echo "Provide remote user@host";
        fi
}

0voto

anthony Points 330

J'ai la même situation, mais ce n'est pas seulement ".vimrc". J'ai aussi des choses comme

  • configuration bash, invitations et fonctions,
  • fichiers de configuration et d'autorisation ssh,
  • scripts shell pratiques à avoir sous la main.
  • bien sûr, mon vimrc, mais aussi quelques fonctions vim et fichiers de coloration syntaxique.

Ma solution (commencée il y a 30 ans avec "dist" à l'origine !) est de configurer une tâche cron nocturne pour synchroniser un minimum de configuration de mon répertoire personnel sur toutes les machines sur lesquelles je travaille, de manière à ce qu'elle se mette à jour chaque nuit.

De cette façon, toutes les autres machines avec lesquelles je travaille restent à jour ! Je peux simplement ajouter une nouvelle machine à la liste des 'comptes' et faire une distribution sur une seule machine pour la démarrer.

Ça n'a pas besoin d'être grand-chose, et vous pouvez commencer petit et rendre les choses plus complexes au fur et à mesure. Comme vous pouvez l'imaginer, après 30 ans ma distribution est maintenant plutôt complexe, donc je ne la mettrai pas ici. Inutile de dire qu'elle fait aussi des choses comme échanger certaines configurations pour d'autres dans certains réseaux, nettoyer le répertoire personnel (par ex. corbeille, fichiers de cache), s'assurer que les permissions du répertoire personnel sont toutes correctes, et ainsi de suite.

REMARQUE : je n'autorise les connexions ssh sans mot de passe que depuis une seule machine 'principale' vers toutes les autres, jamais dans l'autre sens ! Toute connexion ssh croisée est protégée par mot de passe.

-1voto

K.L. Points 613

Vous pourriez envisager un script EXPECT qui vous permet de définir votre chemin et votre environnement (comme des variables EXRC) en appuyant sur une touche spécifique. Il ne devrait pas tarder avant que quelqu'un publie un script similaire.

Lorsque vos fermes de serveurs dépassent quelques dizaines (pensez aux milliers), avoir quelque chose qui configure facilement votre environnement sur une machine 'virginale' est vraiment un sauveur de vie.

Souvent, lorsque je me connecte à une machine, cela crée mon répertoire personnel pour la première fois !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X