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 peop
ellos. 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-options
y 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.pdf
que es una mejor combinación que people.css.sass
aunque (!)
Escribir people
finalmente 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>peop
para tener app/assets/stylesheets/admin/sections/people.css.sass
ya sea la primera o segunda partido.
fuente
'g:ctrlp_match_func
Un 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-R
yCtrl-D
.Ctrl-R
usa tu entrada como Regex sin procesar, lo que significa que solo encontrarás coincidenciaspeople
explícitamente en ella.Ctrl-D
solo 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