Come posso fare in modo che ctrlp esegua una migliore corrispondenza del nome file?


10

Il mio progetto ha questi file:

$ find . -type f -and -name 'peop*'
./app/assets/stylesheets/admin/sections/people.css.sass
./app/controllers/admin/people_controller.rb

Quando mi sono stancato di scrivere :e app/assets/stylesheets/admin/sections/people.css.sass, ho pensato che ctrlp potesse essere un buon modo per salvare un po 'di testo. Tuttavia, non riesco a far corrispondere i file in quello che considero un modo sano.

In primo luogo, uso <C-p>e digito peop, e questo mi dà questi risultati (la corrispondenza "prima" è in fondo):

> 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_

Questi risultati sono orribili. Non ci sono file con peopal loro interno. Anche quando lo espando 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_

Non elenca nessuno dei due (!)

Ho esaminato e ho :help ctrlp-optionstrovato un'unica opzione che migliora leggermente le cose:

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.

Dopo aver impostato questo, ottengo i seguenti risultati su 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_

Va bene, quindi è leggermente meglio, ricevo almeno uno dei file previsti al primo risultato e l'altro come 9 °. Concede ancora hulptabellen-object-unit-soort.pdfdi essere una partita migliore di people.css.sassquanto (però)

Digitare peoplefinalmente mi dà i 2 file previsti come i primi 2:

> app/controllers/admin/organisation_people_controller.rb
> app/assets/stylesheets/admin/sections/people.css.sass
> app/controllers/admin/people_controller.rb
>>> people_

Come posso migliorare questa corrispondenza? Non mi dispiace "la corrispondenza fuzzy", ma non dovrebbe essere così sfocato che corrisponda a tutto e tutti ... In questo caso, mi aspetto che la digitazione <c-P>peopabbia app/assets/stylesheets/admin/sections/people.css.sassla prima o la seconda partita.


2
Sembra che ctrlp possa accettare una funzione di corrispondenza personalizzata. È nella documentazione sotto 'g:ctrlp_match_func Un buon esempio di questo in uso è questo plugin: vim.org/scripts/script.php?script_id=4884
EvergreenTree

Risposte:


7

Una domanda simile è stata appena fatta sul Vim reddit qui . Ho iniziato a usare ctrlp-cmatcher da solo un po 'di tempo fa, che trovo molto più intelligente nel trovare il file giusto. Si noti che richiede un componente compilato. Altrimenti dovrai provare alcuni degli approcci nell'articolo .


4

CtrlP ha alcune diverse modalità Ctrl-Re Ctrl-D. Ctrl-Rusa il tuo input come Regex non elaborato, il che significa che troverai solo corrispondenze peopleesplicite. Ctrl-Dcorrisponde solo al nome file, ignorando il percorso.

Credo che la funzionalità CtrlP predefinita si unisca .*a ogni personaggio solo come carattere non elaborato , quindi un punto viene trattato come un punto. Se sapessi in anticipo che il file era profondo almeno 2 directory, puoi farlo //people.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.