Jak sprawić, by ctrlp lepiej dopasowywał nazwy plików?


10

Mój projekt ma następujące pliki:

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

Kiedy zmęczyłem się pisaniem :e app/assets/stylesheets/admin/sections/people.css.sass, pomyślałem, że ctrlp może być dobrym sposobem na zaoszczędzenie pisania. Nie mogę jednak dopasować plików w sposób, który uważam za rozsądny.

Najpierw używam <C-p>i piszę peop, a to daje mi następujące wyniki („pierwsze” dopasowanie jest na dole):

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

Te wyniki są okropne. Nie peopma tam żadnych plików . Nawet gdy rozwinę to do 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_

Nie wymieniono żadnego z nich (!)

Przeszedłem :help ctrlp-optionsi znalazłem jedną opcję, która nieco poprawia:

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.

Po ustawieniu tego otrzymuję następujące wyniki 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_

Okej, więc jest to nieco lepsze, otrzymuję co najmniej jeden z oczekiwanych plików przy pierwszym wyniku, a drugi jako 9. Nadal hulptabellen-object-unit-soort.pdfjest lepszym rozwiązaniem niż people.css.sasschociaż (!)

Pisanie w peoplekońcu daje mi 2 oczekiwane pliki jako pierwsze 2:

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

Jak mogę poprawić to dopasowanie? Nie mam nic przeciwko „rozmytemu dopasowaniu”, ale nie powinno być tak rozmyte, aby pasowało do wszystkich i wszystkich ... W tym przypadku oczekiwałbym, że pisanie <c-P>peopbędzie miało miejsce app/assets/stylesheets/admin/sections/people.css.sassjako 1. lub 2. dopasowanie.


2
Wygląda na to, że ctrlp może zaakceptować niestandardową funkcję dopasowania. Jest w dokumentacji pod 'g:ctrlp_match_func Dobrym przykładem tego w użyciu jest ta wtyczka: vim.org/scripts/script.php?script_id=4884
EvergreenTree

Odpowiedzi:


7

Podobne pytanie zostało właśnie zadane na reddicie Vima tutaj . Sam zacząłem używać ctrlp-cmatcher już jakiś czas temu, co wydaje mi się znacznie bardziej inteligentne w dopasowywaniu odpowiedniego pliku. Zauważ, że wymaga skompilowanego komponentu. W przeciwnym razie będziesz musiał wypróbować niektóre podejścia z tego artykułu .


4

CtrlP ma kilka różnych trybów Ctrl-Ri Ctrl-D. Ctrl-Rużywa twoich danych wejściowych jako surowego Regexu, co oznacza, że ​​znajdziesz peoplew nim tylko dopasowania wyraźnie. Ctrl-Ddopasowuje tylko nazwę pliku, ignorując ścieżkę.

Uważam, że domyślną funkcją CtrlP jest łączenie się .*z każdą postacią jako postać surową, więc kropka jest traktowana jak kropka. Jeśli wiesz z góry, że plik ma głębokość co najmniej 2 katalogów, możesz to zrobić //people.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.