Meu projeto possui estes arquivos:
$ find . -type f -and -name 'peop*'
./app/assets/stylesheets/admin/sections/people.css.sass
./app/controllers/admin/people_controller.rb
Quando me cansei de digitar :e app/assets/stylesheets/admin/sections/people.css.sass
, pensei que ctrlp poderia ser uma boa maneira de economizar digitação. No entanto, não consigo que ele corresponda aos arquivos do que considero uma maneira sã.
Primeiro, uso <C-p>
e digito peop
, e isso me dá esses resultados (a "primeira" correspondência fica na 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_
Esses resultados são horríveis. Nem arquivos com peop
eles estão lá. Mesmo quando eu expandi-lo para 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_
Não lista nenhum deles (!)
Passei :help ctrlp-options
e encontrei uma única opção que melhora as coisas um pouco:
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.
Depois de definir isso, obtenho os seguintes resultados em 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_
Ok, então isso é um pouco melhor, recebo pelo menos um dos arquivos esperados no primeiro resultado e o outro no 9º. Ainda é considerado hulptabellen-object-unit-soort.pdf
um par melhor do que no people.css.sass
entanto (!)
A digitação people
finalmente me fornece os 2 arquivos esperados como os 2 primeiros:
> app/controllers/admin/organisation_people_controller.rb
> app/assets/stylesheets/admin/sections/people.css.sass
> app/controllers/admin/people_controller.rb
>>> people_
Como posso melhorar essa correspondência? Não me importo de "correspondência difusa", mas não deve ser tão difusa que corresponde a tudo e a todos ... Nesse caso, eu esperaria que a digitação <c-P>peop
tivesse app/assets/stylesheets/admin/sections/people.css.sass
como a 1ª ou a 2ª correspondência.
fonte
'g:ctrlp_match_func
Um bom exemplo disso em uso é este plugin: vim.org/scripts/script.php?script_id=4884Respostas:
Uma pergunta semelhante foi feita no reddit do Vim aqui . Comecei a usar o ctrlp-cmatcher há algum tempo, o que eu acho muito mais inteligente em combinar o arquivo certo. Observe que ele requer um componente compilado. Caso contrário, você terá que tentar algumas das abordagens no artigo .
fonte
CtrlP tem alguns modos diferentes,
Ctrl-R
eCtrl-D
.Ctrl-R
usa sua entrada como Regex bruto, o que significa que você encontrará apenas correspondênciaspeople
explicitamente.Ctrl-D
corresponde apenas ao nome do arquivo, ignorando o caminho.Eu acredito que a funcionalidade CtrlP padrão está apenas se unindo
.*
a todos os caracteres como um caractere bruto, então um período é tratado como um período. Se você soubesse com antecedência que o arquivo tinha pelo menos 2 diretórios, poderia fazê-lo//people
.fonte