Mi proyecto tiene estos archivos:
$ find . -type f -and -name 'peop*'
./app/assets/stylesheets/admin/sections/people.css.sass
./app/controllers/admin/people_controller.rb
Cuando me cansé de escribir :e app/assets/stylesheets/admin/sections/people.css.sass, pensé que ctrlp podría ser una buena manera de guardar algo de escritura. Sin embargo, no puedo hacer que coincida con los archivos en lo que considero una forma sensata.
Primero, uso <C-p>y escribo peop, y eso me da estos resultados (la "primera" coincidencia está en la parte inferior):
> 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_
Estos resultados son horribles. Tampoco hay archivos con peopellos. Incluso cuando lo expando a 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_
No enumera ninguno de ellos (!)
Revisé :help ctrlp-optionsy encontré una única opción que mejora un poco las cosas:
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.
Después de configurar esto, obtengo los siguientes resultados en 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_
Bien, así que esto es un poco mejor, obtengo al menos uno de los archivos esperados en el primer resultado, y el otro como el noveno. Todavía considera hulptabellen-object-unit-soort.pdfque es una mejor combinación que people.css.sassaunque (!)
Escribir peoplefinalmente me da los 2 archivos esperados como los primeros 2:
> app/controllers/admin/organisation_people_controller.rb
> app/assets/stylesheets/admin/sections/people.css.sass
> app/controllers/admin/people_controller.rb
>>> people_
¿Cómo puedo mejorar este emparejamiento? No me importa "coincidencia aproximada", pero no debería ser tan difusa que coincide con todo y todos ... En este caso, yo esperaría a escribir <c-P>peoppara tener app/assets/stylesheets/admin/sections/people.css.sassya sea la primera o segunda partido.
fuente

'g:ctrlp_match_funcUn buen ejemplo de esto en uso es este complemento: vim.org/scripts/script.php?script_id=4884Respuestas:
Una pregunta similar acaba de hacerse en el Vim reddit aquí . Comencé a usar ctrlp-cmatcher yo mismo hace un tiempo, lo que me parece mucho más inteligente para que coincida con el archivo correcto. Tenga en cuenta que requiere un componente compilado. De lo contrario, deberá probar algunos de los enfoques del artículo .
fuente
CtrlP tiene algunos modos diferentes,
Ctrl-RyCtrl-D.Ctrl-Rusa tu entrada como Regex sin procesar, lo que significa que solo encontrarás coincidenciaspeopleexplícitamente en ella.Ctrl-Dsolo coincide con el nombre del archivo, ignorando la ruta.Creo que la funcionalidad predeterminada CtrlP se está uniendo
.*a cada carácter como un carácter sin formato , por lo que un punto se trata como un punto. Si sabía de antemano que el archivo tenía al menos 2 directorios de profundidad, podría hacerlo//people.fuente