web-dev-qa-db-fra.com

Teller Vim d'utiliser personnalisé .VIMRC est facile, mais comment le dire d'utiliser une autre voie au lieu de ~ / .vim?

Je peux utiliser vim -u filename utiliser filename au lieu de ma valeur par défaut .vimrc. J'utilise cette méthode lors de la commutation de contextes utilisateur (su) à utiliser mon .vimrc même si elle fonctionnait comme superutilisateur.

Comment puis-je atteindre le même également pour le dossier qui par défaut est ~/.vim afin que je puisse pointer point VIM à partir de la ligne de commande vers un autre dossier?


Ce que je veux réaliser

D'accord, assumez l'utilisateur joe (HOME=/home/joe) et utilisateur root (HOME=/root). Utilisateur joe a un ensemble d'alias pour vim qui ressemble à ceci (mais défini à l'origine à l'aide de $HOME variable pour faire cette dynamique):

alias vim='vim -p -N -n -i NONE -u "/home/joe/.vimrc"'

Puis l'utilisateur joe fait quelque chose dans le sens de Sudo su - (mais avec une magie ajoutée), entraînant le .bashrc et d'autres goodies de /home/joe Pour être chargé pour root. Utilisateur root a maintenant le même alias pour vim défini comme indiqué ci-dessus.

Le problème est que cela .vimrc est utilisé sur divers systèmes et dans divers scénarios. Le compte de Joe s'appelle souvent joe, mais parfois ce sera quelque chose comme local.joe ou autre chose, entraînant une valeur différente pour $HOME. Si dur codant un chemin absolu vers le ~/.vim Dossier ne semble pas être une bonne idée. Cependant, dans notre utilisateur ci-dessus, l'utilisateur root n'a pas de dossier /root/.vim ce qui devrait toutefois exister par défaut via le chargé .vimrc (/home/joe/.vimrc).

Ce que je veux réaliser - de préférence sur la ligne de commande - consiste à obtenir Vim d'utiliser des plug-ins etc. de dessous /home/joe/.vim Lorsqu'il est commencé comme root (en supposant que le alias est défini comme indiqué - d'autres cas peuvent être ignorés). S'il y a une méthode dynamique via Vimscript, veuillez fournir des pointeurs. Mais en utilisant des variables telles que $HOME conduirait à une prise 22, je pense.

15
0xC0000022L

Dans le .VIMRC, vous choisissez, vous pouvez spécifier le chemin d'exécution:

let &runtimepath=/path/to/specific/vim/folder

Si vous utilisez votre personne .vimrc Ensuite, vous pouvez définir ceci sur votre .vim répertoire et il devrait fonctionner à la fois comme su et votre compte normal.

3
Paul