Le plugin Vim Ctrlp a un moyen d'ignorer globalement certains noms de dossier. Par exemple:
let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$'
Cependant, j'ai une règle d'ignorance spécifique à un projet. Je voudrais quelque chose de plus comme un .gitignore
fichier.
Existe-t-il un moyen d'ignorer un dossier spécifique dans un projet spécifique sans modifier ma configuration globale?
Réponses:
Utiliser une commande de liste personnalisée
Ctrlp vous permet de lui dire quelle commande utiliser pour obtenir une liste de fichiers dans le dossier. Donc, si vous vouliez exclure tout nom
beets.txt
, vous pourriez faire:C'est global, mais cela commence à pointer vers la réponse: fournissez votre propre commande shell.
Encore mieux, Ctrlp vous permet de fournir plusieurs commandes shell avec des marqueurs, ce qui signifie "si vous voyez ce marqueur dans le répertoire racine, utilisez cette commande".
J'ai trouvé cela dans
:help ctrlp
et modifié légèrement en fonction du commentaire de l'auteur sur un problème.Cela signifie: "Si vous voyez
.git
dans le dossier, utilisezgit ls-files...
. Sinon, si vous voyez.hg
, utilisezhg --cwd...
, sinon utilisez un régulierfind
."Donc, pour ignorer un dossier spécifique dans un projet, imaginez une commande qui ignorera ce dossier, puis placez un marqueur unique dans ce projet pour laisser Ctrlp que vous souhaitez utiliser votre commande spéciale ici .
(Dans mon cas, je voulais en fait ignorer les fichiers qui étaient dedans
.gitignore
, donc lagit ls-files
commande ci-dessus fonctionne pour moi.)la source
Si vous utilisez le backend Silver Searcher pour CtrlP (qui est beaucoup plus rapide), ajoutez simplement un
.agignore
fichier à votre répertoire de projet au même format qu'un.gitignore
:Vous pouvez également conserver un
~/.agignore
fichier global .Ajoutez Silver Searcher comme backend avec ceci dans votre
.vimrc
la source
if executable("ag") let g:ctrlp_user_command = 'ag %s -l --nocolor --depth 8 -g ""' endif
. La limite de profondeur est utile si je frappe accidentellement ctrl-p lors de l'édition d'un fichier dans mon dossier personnel. J'ai trouvé que le drapeau caché inclurait des fichiers en .git /Spécifie des fichiers intentionnellement non suivis dans un fichier
Pour résoudre ce problème avec un fichier comme
.gitignore
(basé sur la solution grep de Nathan), j'ai créé un fichier nommé.ctrlpignore
et mis les modèles à ignorer, séparés par des lignes:Et ma configuration ctrlp:
Peut-être que le
.gitignore
lui - même peut être utilisé pour ignorer les fichiers dans ctrlp, sans avoir besoin de créer un nouveau fichier pour faire presque la même chose.la source
Comme l'a dit Wagner Andrade , utiliser un séparateur
.ctrlpignore
serait une bonne idée.Un paramètre vim plus robuste et pratique est comme ceci:
.ctrlpignore
peut être placé dans n'importe quel répertoire qui serait reconnu comme répertoire racine par ctrlp. Voici un exemple, chaque ligne commence par./
vim ~/.ctrlpignore
Remarque:
grep -F
interprètera le modèle, ex. './.tmp', comme une chaîne fixe si vous ne voulez pas que votre './ptmp' soit filtré. Il y a encore quelques bugs triviaux: './.tmp' filtrera également './.tmp2'. Oubliez ça, je n'aime pas\.
g:ctrlp_custom_ignore
sera ignoré sig:ctrlp_user_command
est défini. Cela pourrait être fait de manière plus complexeg:ctrlp_user_command
une liste blanche au lieu d'une liste noire est également possible. Plus pratique s'il est implémenté dans un script séparé
la source