2010-10-15 4 views
14

Lorsque vous traitez avec .vimrc fichiers de configuration sous Linux et Windows (deux systèmes, j'ai utilisé jusqu'à présent) et en essayant de garder multiplateformes configurations, j'ai trouvé principalement deux solutions:Avantages et inconvénients pour chaque solution multiplateforme vimrc?

  1. Créer un nouveau dossier pour les fichiers vim dans /home/user, donc les deux systèmes ont le même nom de répertoire vim (au lieu de .vim par défaut dans Windows et vimfiles dans Windows), et d'utiliser set runtimepath pour obtenir ce nouveau dossier;

    set runtimepath = ~/vim_local source VIMRUNTIME $ ~/vim_local/vimrc

    Source

  2. Créer un tas de conditions d'os (comme has("32")) dans .vimrc en cas de besoin, basé sur la plateforme ou capabilities , mais en conservant les noms unix d'origine et en créant des liens symboliques dans le dossier d'accueil Windows vers les fichiers d'origine (vimfiles à .vim quelque part, peut-être un répertoire .vim dans la maison Windows, ou même un dossier de boîte de dépôt). (Je n'ai pas testé cette approche dans les anciennes versions de Windows comme XP).

Quelle solution préférez-vous, et pourquoi? Quels sont les inconvénients de chaque solution? Quelles autres solutions avez-vous? Si vous utilisez un contrôle de source dans vos fichiers de configuration .vimrc, effectuez-vous également la mise à jour de vos fichiers de plugin (donc lorsque vous "déployez" votre config sur des ordinateurs, vous seulement faire un checkout/clone de votre dépôt)? Beaucoup de gens utilisent pathogen et gardent chaque plugin à l'intérieur de son propre dossier (généralement un repo git de github). Est-il logique de contrôler la version d'un plugin qui est déjà un référentiel d'ailleurs?

Répondre

8

J'utilise quelque chose qui se rapproche de l'option 2, mais probablement considéré comme l'option 3. Je garde tout dans un seul dossier appelé ~/.vim ou c:\vim\vimfiles. Ceux-ci sont contrôlés en version avec Bazaar et conservés sur un serveur avec un accès sftp. Lors de l'installation vim sur une nouvelle machine Windows (avec Bazaar), je le mets dans c:\vim\vim73 et à faire:

bzr co sftp://<username>@<server>/path/to/vimfiles 
copy vimfiles\vimrc_linker.vim _vimrc 

Sur les machines Linux que je fais:

cd 
bzr co sftp://<username>@<server>/path/to/vimfiles .vim 
ln -s .vim/vimrc_linker.vim .vimrc 

vimrc_linker.vim contient une ligne:

runtime vimrc 

qui ouvre le fichier appelé vimrc qui est stocké dans .vim (ou vimfiles sous Windows). Cela me permet de garder mon vimrc sous le même contrôle de version que le reste du répertoire .vim. Comme j'utilise généralement cygwin Bazaar sous Windows, je conserve tous les plugins avec des fins de ligne unix pour éviter les problèmes de compatibilité (Windows & Linux vims gère les terminaisons de ligne unix dans les plugins, mais Linux n'aime pas les fins de ligne Windows). L'utilisation du contrôle de version me permet de garder très facilement tous les PC que j'utilise en synchronisation et si j'installe un plugin et que je ne l'aime pas, je peux très facilement annuler le changement sans avoir à penser aux fichiers ont été installés par ce plugin (le VCS me dit).En ce qui concerne les conditions d'os, j'utilise has("win32") etc pour différencier. Cependant, il y a très peu de situations qui nécessitent cette différenciation, donc c'est un inconvénient mineur. Mon vimrc est de 1000 lignes à long (il a fait quelques fonctions que je ne me suis jamais ronde pour séparer des plug-ins) et en seulement 10-15 sont à l'intérieur des blocs has:

  • configuration de police
  • chemin à ctags/cscope que j'ai un exécutable Windows dans vimfiles pour la facilité de faire fonctionner sur plusieurs PC sans beaucoup d'installation
  • Annuler emplacement dir
  • une cartographie (,x) pour maximiser la fenêtre GVim: cela se fait différemment dans Windows & Linux
  • Sur Windows, certains mappages pour vimtweak.dll pour aller complètement en plein écran (pas de barre de titre ou quoi que ce soit). N'ont pas trouvé d'équivalent pour Linux.
+0

Merci de partager votre installation. Il y a quelques approches intéressantes ici. –

+0

J'utilise la même approche et ça marche très bien. –

6

je mets dans mon .vimrc:

set runtimepath^=~/.vim "Use instead of "vimfiles" on windows 

si le nom du répertoire .vim reste sur les deux plates-formes. Je pourrais utiliser une condition os pour l'exécuter uniquement sur Windows.

J'ai trouvé qu'il est préférable d'être aussi unixy que possible, même sur Windows. J'utilise de fins de ligne unix par défaut (vous ne voulez pas un CR dans la configuration vim, en particulier):

set fileformats=unix,dos,mac 

et les polices spécifiques à la plateforme:

set guifont=Consolas:h12,Monaco:h15,Inconsolata:h12 

J'utilise aussi la version control (git/github) pour le fichier dotfiles/config/etc dans mon répertoire personnel, et ça marche très bien. Le seul truc était de configurer correctement les fichiers ignorés afin que je ne sois pas constamment informé de tous les fichiers que je ne veux pas utiliser (je devais utiliser .git/info/exclude parce que .gitignore dans le dossier home a une signification particulière).

+1

"J'ai trouvé qu'il était préférable d'être aussi unixy que possible, même sur Windows." Approche intéressante, c'est ce que je pense aussi. –

+1

Il est préférable de préfixer "~/.vim", sinon "call pathogen # helptags()" échoue lors de la recherche du répertoire doc (donné un ~/vimfiles/doc vide/obsolète). – blueyed

+0

@blueyed, merci. Fixe (dans la question et ma config locale) –

Questions connexes