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
.
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