Mon projet a ces fichiers:
$ find . -type f -and -name 'peop*'
./app/assets/stylesheets/admin/sections/people.css.sass
./app/controllers/admin/people_controller.rb
Comme j'en avais assez de taper :e app/assets/stylesheets/admin/sections/people.css.sass
, je pensais que ctrlp pourrait être un bon moyen d'économiser de la frappe. Cependant, je n'arrive pas à faire correspondre les fichiers de ce que je considère être une manière saine.
Tout d'abord, j'utilise <C-p>
et tape peop
, et cela me donne ces résultats (la "première" correspondance est en bas):
> app/models/attribute_group.rb
> app/models/contract_template.rb
> app/policies/contract_policy.rb
> app/uploaders/photo_uploader.rb
> app/policies/invoice_policy.rb
> app/views/layouts/pdf.pdf.haml
> app/uploaders/logo_uploader.rb
> app/models/property_object.rb
> app/policies/person_policy.rb
> app/policies/photo_policy.rb
>>> peop_
Ces résultats sont horribles. Aucun des fichiers avec peop
en eux n'est là. Même lorsque je l'étends people
:
> app/policies/contract_template_policy.rb
> app/models/concerns/exportable.rb
> app/models/contract_template.rb
> app/uploaders/photo_uploader.rb
> app/uploaders/logo_uploader.rb
> app/views/admin/people/_show.html.haml
> app/views/admin/people/_form.html.haml
> app/views/admin/people/show.html.haml
> app/views/admin/people/edit.html.haml
> app/views/admin/people/new.html.haml
>>> people_
Il ne répertorie aucun d'eux (!)
J'ai parcouru :help ctrlp-options
et trouvé une seule option qui améliore quelque peu les choses:
Set this to 1 to set searching by filename (as opposed to full path) as the
default:
let g:ctrlp_by_filename = 0
Can be toggled on/off by pressing <c-d> inside the prompt.
Après avoir défini cela, j'obtiens les résultats suivants peop
:
> app/controllers/admin/organisation_people_controller.rb
> app/assets/stylesheets/admin/sections/people.css.sass
> doc/formulieren/opdrachtverlening-woningbeheer.pdf
> doc/formulieren/hulptabellen-object-unit-soort.pdf
> doc/formulieren/brandpreventievoorjongeren.pdf
> app/policies/organisation_person_policy.rb
> doc/prototype-admin/prototype/inspectiemodule_apparaten.html
> app/policies/property_object_policy.rb
> app/policies/person_policy.rb
> app/controllers/admin/people_controller.rb
>d> peop_
D'accord, c'est donc un peu mieux, j'obtiens au moins un des fichiers attendus au premier résultat, et l'autre comme le 9ème. Il considère toujours hulptabellen-object-unit-soort.pdf
être un meilleur match que people.css.sass
si (!)
Taper people
me donne enfin les 2 fichiers attendus comme les 2 premiers:
> app/controllers/admin/organisation_people_controller.rb
> app/assets/stylesheets/admin/sections/people.css.sass
> app/controllers/admin/people_controller.rb
>>> people_
Comment puis-je améliorer cette correspondance? Cela ne me dérange pas de "correspondance floue", mais cela ne devrait pas être si flou qu'il correspond à tout et à tout le monde ... Dans ce cas, je m'attendrais à ce que la frappe <c-P>peop
ait app/assets/stylesheets/admin/sections/people.css.sass
comme première ou deuxième correspondance.
la source
'g:ctrlp_match_func
Un bon exemple de ceci en cours d'utilisation est ce plugin: vim.org/scripts/script.php?script_id=4884Réponses:
Une question similaire vient d'être posée sur le redim Vim ici . J'ai commencé à utiliser ctrlp-cmatcher moi - même il y a un certain temps, ce que je trouve beaucoup plus intelligent pour faire correspondre le bon fichier. Notez qu'il nécessite un composant compilé. Sinon, vous devrez essayer certaines des approches de l' article .
la source
CtrlP a quelques modes différents,
Ctrl-R
etCtrl-D
.Ctrl-R
utilise votre entrée comme Regex brut, ce qui signifie que vous ne trouverezpeople
explicitement que des correspondances avec .Ctrl-D
ne correspond qu'au nom de fichier, en ignorant le chemin.Je crois que la fonctionnalité CtrlP par défaut se joint
.*
à chaque caractère en tant que caractère brut, donc un point est traité comme un point. Si vous saviez à l'avance que le fichier avait au moins 2 répertoires, vous pourriez le faire//people
.la source