Comment spécifier les paramètres Vim pour tous les fichiers du répertoire actuel?
La solution idéale serait si Vim recherchait et lisait un .vimrc dans le répertoire courant avant de rechercher ~ / .vimrc, et y appliquait les paramètres pour l'arborescence entière.
J'ai vu un plugin , mais cela signifie que les paramètres appliqués ne sont pas transparents car ils nécessitent l'installation du plugin. En revanche, une modeline est transparente car quel que soit le vimrc d'un utilisateur ou l'invocation de vim spécifique, les paramètres de modeline seront appliqués pour ce fichier.
Les choses que j'ai essayées sont
- placer un .vimrc dans le répertoire de travail
:so vimrc
dans la modeline.
Je suppose que les deux ne fonctionnent pas pour des raisons de sécurité. Je n'ai pas besoin de la pleine puissance d'un vimrc; être lié à des paramètres acceptables par une modeline suffirait. Mon objectif est de permettre aux vimmers d'adopter plus facilement des normes de codage dans un projet.
Réponses:
Je suis un partisan du plugin . Pour plusieurs raisons:
BTW, la solution de sth peut être utilisée pour générer un seul fichier de configuration. Ceci est très similaire à l'approche du plugin sauf que le .vimrc doit être parasité avec des options non globales, et il ne supporte pas facilement les fichiers de configuration multiples / partagés.
la source
Vous pouvez mettre quelque chose comme ça dans
$VIM/vimrc
la source
Je suggère fortement de ne pas utiliser
set exrc
Même avec
set secure
, sous * nix, vim exécutera toujours les autocommandes, shell, et autres, si vous possédez le fichier. Donc, si vous parvenez à éditer un fichier dans cette archive tar, je vous ai envoyé avec un.vimrc
contenant:vous serez probablement moins amusé que moi.
la source
Cette question est ancienne, mais elle semble être une préoccupation assez naturelle et persistante.
Ma solution est assez simple. Je place un
.vimrc
fichier dans le répertoire racine de mes projets. La première ligne du.vimrc
fichier sources généralement~/.vimrc
, puis ajoute la configuration particulière que je veux. Je aliastvim='vim -u .vimrc'
, et utilisetvim
dans mes répertoires de projets personnels. «tvim» pour «vim de confiance», ce qui signifie que si je l'exécute dans un répertoire contenant un.vimrc
fichier et que quelque chose ne va pas, je n'ai personne d'autre à blâmer que moi-même, puisque j'ai explicitement dit que je lui faisais confiance. De plus, je garde un groupe de ceux-ci stockés afin que je puisse parfois simplement créer un lien logiciel avec celui que je veux pour un type particulier de projet.la source
source $HOME/.vimrc
de mon local.vimrc
, Vim se plaint qu'il ne peut pas trouver mes plugins installés à l'échelle du système (pathogène dans ce cas; laexecute pathogen#infect()
commande au-dessus de my$HOME/.vimrc
échoue avecUnknown function ...
). Comment puis-je réparer cela?Placer un .vimrc dans le répertoire de travail est en fait pris en charge, uniquement désactivé par défaut. Voir
:h 'exrc'
et:h startup
pour plus de détails, le réglage'exrc'
permettra la lecture à.vimrc
partir du répertoire actuel.Il est également recommandé de l'
:set secure
utiliser lors de son utilisation. Cela verrouille:autocmd
, shell et écrit les commandes pour.vimrc
dans le répertoire courant.Une autre chose qui pourrait valoir la peine d'être examinée est la configuration d'une session (
:h session
) avec une vue et des paramètres standard pour le projet.Cela dit, j'irais probablement avec l'option plugin détaillée par Luc Hermitte moi-même.
la source
Pour minimiser les risques de sécurité avec TOUTES les fonctionnalités "autorun" pour TOUT ces jours-ci, puis-je vous conseiller d'utiliser les fonctionnalités existantes de vim au lieu de plugins (bagages de portabilité)?
Par exemple.
Le fichier vimrc de mon dossier local est nommé "_gvimrc" (volontairement). Cela réduit l'espoir pour des gens comme Phen de s'amuser à nos dépens. :-)
Dans mon fichier $ VIM / .vimrc, j'ai inséré:
à la fin.
J'utilise "filereadable ()" sur "fileexists ()" car ce dernier a une certaine bizarrerie lorsqu'il est torturé en ouvrant plusieurs fichiers (10+) simultanément, (je ne sais pas pourquoi).
Bien sûr, vous pouvez donner votre propre nom de fichier unique pour masquer davantage les éventuels fauteurs de troubles. Tels que "_mygvimrc", "_gobbledygook", etc. Il vous suffit de choisir un nom standardisé et de le rechercher en conséquence dans votre $ VIM / .vimrc. S'appuyer sur les composants internes de vi / vim pour cela élimine les problèmes de portabilité. MAIS, NE le nommez PAS .vimrc (ou _vimrc) pour empêcher le sourcing récursif au cas où vous éditeriez le fichier $ VIM / .vimrc avec vim plus tard.
J'utilise cela depuis Windoze 98SE, via Windork XP Pro, et maintenant Windorkier 7 (5+ ans déjà). Je marquerai une liste de fichiers .txt dans l'Explorateur, puis j'utiliserai "Modifier avec plusieurs Vim", ce qui entraînera l'ouverture simultanée de plusieurs fenêtres Vim. Pour mon travail, je fais cela plusieurs fois par jour, quotidiennement. Tous les fichiers ont été traités avec ce que j'ai défini dans mon _gvimrc local.
la source
En supposant que les gens n'ajoutent pas de fichiers tous les quelques jours, vous pouvez probablement ajouter une modeline en haut de chaque fichier. En fait, si votre système de contrôle de version le permet, vous pourriez probablement appliquer une règle qui stipule que chaque fichier doit avoir une modélisation lors de son archivage.
la source
Je suis d'accord avec l'approche du plugin pour des raisons de sécurité.
Il existe un très bon plugin qui n'a pas encore été mentionné. Il vous permet d'utiliser un
.lvimrc
dans vos répertoires de projet.Essayez "localvimrc":
http://www.vim.org/scripts/script.php?script_id=441
https://github.com/embear/vim-localvimrc
la source
Utilisez "editorconfig"
Si les types de normes de codage que vous souhaitez appliquer sont liés au style d'indentation, à la taille de l'onglet, au format de fichier et au jeu de caractères, alors vous pouvez consulter "editorconfig" , qui est une norme multi-éditeurs pour spécifier ce type de paramètres dans un projet spécifique et que tous les éditeurs suivent cette configuration.
La spécification "editorconfig" permet aux projets de demander des paramètres différents en fonction des extensions de fichier ou des noms dans le projet. (Vous pouvez donc avoir des Makefiles utilisant des TAB, vos scripts Python en utilisant 4 espaces et vos scripts shell en utilisant 2 espaces pour l'indentation.)
Vous avez besoin d'un plug-in pour utiliser "editorconfig" dans Vim. Le site officiel en fournit un, mais personnellement, je recommanderais sgur / vim-editorconfig , qui est écrit en pur Vimscript, vous n'avez donc pas à vous soucier trop des dépendances externes.
Puisque "editorconfig" vise la compatibilité entre les éditeurs, il est assez limité dans ce qu'il fait, donc si vous voulez un espace, un format de fichier (DOS vs Unix) et un encodage cohérents (Unicode utf-8, etc.), alors "editorconfig " est pour toi.
la source
Essayez vim-localrc
https://github.com/thinca/vim-localrc/blob/master/doc/localrc.txt
la source
J'ai regardé les plugins qui existaient et je n'en avais pas vraiment envie, j'ai donc écrit une fonction simple qui s'appuie sur vim-fugitive . L'avantage de ceci est qu'il sait que la racine du projet est toujours la racine du référentiel, et en plus je peux hacher le fichier pour conserver une table de confiance. Mettez simplement ce qui suit dans votre
.vimrc
fichier.Si l'
!
option est définie sur leviminfo
paramètre, alors leSAFE_VIMRC
dictionnaire sera conservé entre les exécutions (notez le^
pour ajouter l'option au début afin qu'elle ne gâche pas l'n
option).la source