Je me demandais s'il y avait un moyen d'obtenir vim pour lire les fichiers .gitignore et les utiliser pour déterminer les options à ne pas présenter lors de l'auto-complétion des noms de fichiers. Par exemple, en travaillant en python, je ne voudrais pas voir les fichiers .pyc proposés pour l'édition. Je pense que vim a son propre mécanisme pour cela, je me demandais comment charger des informations de .gitignore dans celui-ci.Puis-je faire en sorte que vim respecte mes fichiers .gitignore?
Répondre
Comme le suggère @dwc, voici un script vim:
let filename = '.gitignore'
if filereadable(filename)
let igstring = ''
for oline in readfile(filename)
let line = substitute(oline, '\s|\n|\r', '', "g")
if line =~ '^#' | con | endif
if line == '' | con | endif
if line =~ '^!' | con | endif
if line =~ '/$' | let igstring .= "," . line . "*" | con | endif
let igstring .= "," . line
endfor
let execstring = "set wildignore=".substitute(igstring, '^,', '', "g")
execute execstring
endif
Prenez cette source et le mettre dans un fichier dans votre répertoire de plug-in, comme ~/.vim/plugin/gitignore.vim
. Il va lire votre fichier .gitignore
et l'analyser, en transformant son format en un format approprié pour wildignore
, puis définir cette option.
Limitations:
- Cela lire le fichier
.gitignore
à partir du répertoire où vous lancez vim. Aucun effort n'est fait pour rechercher d'autres fichiers.gitignore
et les analyser. Vous pouvez également spécifier un chemin absolu vers un fichier sur la première ligne. - L'option
wildignore
dans vim ne prend pas en charge la notion de la négation ignore comme vous pouvez dans un fichier.gitignore
. Autrement dit, vous ne pouvez pas dire:set wildignore=*.html,!foo.html
pour qu'il ignore tous les fichiers html sauffoo.html
. Par conséquent,.gitignore
lignes qui commencent par! sont simplement ignorés.
Vim modèles de fichiers ignorer spécifiés dans l'option wildignore
, de sorte que vous pouvez les définir comme ceci:
:set wildignore=*.o,*~,*.pyc
Ou placer la même ligne (sans « : ») dans votre fichier ~/.vimrc. Si vous avez besoin de quelque chose de plus dynamique comme ajuster le .gitignore dans le répertoire courant, alors vous devrez faire quelques scripts, mais je laisserai cela comme un exercice pour quelqu'un d'autre.
Bonne réponse. Note: Vous ne pouvez pas avoir d'espaces entre le \ *. O \ * ~ et \ *. Pyc, donc ce devrait être: ': set wildignore = *. O, * ~, *. Pyc'. Cheers –
j'ai écrit un plugin pour cela: https://github.com/octref/RootIgnore
Il peut ajouter .gitignore
modèles à votre wildignore automatiquement.
Quelques fonctionnalités pratiques:
- Lorsque vous êtes dans un sous-répertoire, comme ceci:
my_proj/ .gitignore .git/ sub/
Si vous cd en sous et ouvrez vim là, le plugin GOES récursivement jusqu'à trouver le .gitignore
et l'ajouter à wildignore
.
- Vous pouvez facilement ajouter des règles
~/.gitignore
parlet g:RootIgnoreUseHome = 1
.
- 1. Comment faire en sorte que FlexBuilder reconnaisse mes fichiers MXML en tant qu'applications au lieu de composants?
- 2. Comment puis-je faire en sorte que Rails cesse de recharger mes gemmes?
- 3. Comment puis-je faire en sorte que Eclipse exécute tous mes tests unitaires Groovy?
- 4. Comment faire en sorte que l'URL envoie un formulaire d'action?
- 5. Comment puis-je faire en sorte que log4j supprime les anciens fichiers journaux en rotation?
- 6. Comment faire en sorte que PHPMyAdmin affiche les avertissements MySQL?
- 7. Faire en sorte que http apparaît dans une adresse Web
- 8. Comment puis-je vraiment faire en sorte que Subversion ignore un répertoire?
- 9. Comment puis-je faire en sorte que DataContractJsonSerializer sérialise un objet en tant que chaîne?
- 10. Comment faire pour que Vim Omni Completion fonctionne dans Makefiles?
- 11. Est-ce que getpwnam respecte /etc/nsswitch.conf?
- 12. Comment faire en sorte que log4net génère des fichiers journaux lorsqu'il est exécuté en tant qu'utilisateur non-administrateur?
- 13. Suggestions pour Grails .gitignore
- 14. Comment faire en sorte que Visual Studio prenne des actions automatiques lors de l'archivage?
- 15. Comment faire en sorte que ma sous-classe de UIView apparaisse dans Interface Builder?
- 16. Comment puis-je faire en sorte que Team Build exécute des tests MbUnit?
- 17. Comment puis-je faire en sorte que Sandcastle joue bien avec SVN?
- 18. Comment faire en sorte que la fenêtre du navigateur suive en douceur un élément animé?
- 19. Comment faire pour que Vim continue de tirer des puces?
- 20. Gestion de fichiers VI/VIM
- 21. Qu'est-ce qui pourrait faire en sorte que XMLHttpRequest ne change jamais d'état dans Firefox?
- 22. Comment puis-je faire en sorte que Nokogiri analyse et renvoie un document XML?
- 23. Comment "faire" efficacement avec Vim
- 24. Comment faire en sorte que Subversion utilise un outil de comparaison tiers?
- 25. Existe-t-il un moyen de faire en sorte que les classes dérivées remplacent ToString()?
- 26. Y a-t-il un moyen de faire en sorte que cffile.oldFileSize renvoie une valeur correcte?
- 27. GWT et IE7 - faire en sorte que le navigateur se souvienne des mots de passe
- 28. Comment puis-je faire en sorte que WCF ferme automatiquement les connexions?
- 29. Comment puis-je faire en sorte que deux éléments de bloc restent sur la même ligne?
- 30. Comment puis-je faire en sorte que JQueryUI puisse être trié plus rapidement?
Pour info, voici le code sur vim.org: http: //www.vim.org/scripts/script.php? script_id = 2557 – Florian
Remplace 'set wildignore =' par 'set wildignore + ='. De cette façon, vos précédents paramètres ignorés ne sont pas écrasés. – silvenon
Comment faites-vous ce travail pour les chemins racine? ("/blabla") – silvenon