Proyek saya memiliki file-file ini:
$ find . -type f -and -name 'peop*'
./app/assets/stylesheets/admin/sections/people.css.sass
./app/controllers/admin/people_controller.rb
Ketika saya bosan mengetik :e app/assets/stylesheets/admin/sections/people.css.sass
, saya pikir ctrlp mungkin cara yang baik untuk menyimpan beberapa pengetikan. Namun, saya tidak bisa mendapatkannya untuk mencocokkan file dengan apa yang saya anggap sebagai cara yang waras.
Pertama, saya menggunakan <C-p>
dan mengetik peop
, dan itu memberi saya hasil ini (kecocokan "pertama" ada di bagian bawah):
> 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_
Hasil ini mengerikan. Tidak ada file peop
di dalamnya. Bahkan ketika saya mengembangkannya ke 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_
Itu tidak mencantumkan salah satu dari mereka (!)
Saya melewati :help ctrlp-options
, dan menemukan satu opsi yang agak memperbaiki keadaan:
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.
Setelah mengatur ini, saya mendapatkan hasil sebagai berikut 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_
Oke, jadi ini sedikit lebih baik, saya mendapatkan setidaknya satu file yang diharapkan pada hasil pertama, dan yang lainnya sebagai yang ke-9. Ini masih dianggap hulptabellen-object-unit-soort.pdf
sebagai pertandingan yang lebih baik daripada people.css.sass
(!)
Mengetik people
akhirnya memberi saya 2 file yang diharapkan sebagai 2 yang pertama:
> app/controllers/admin/organisation_people_controller.rb
> app/assets/stylesheets/admin/sections/people.css.sass
> app/controllers/admin/people_controller.rb
>>> people_
Bagaimana saya bisa menjadikan pencocokan ini lebih baik? Saya tidak keberatan "fuzzy matching", tetapi seharusnya tidak begitu fuzzy cocok dengan semua dan semua orang ... Dalam hal ini, saya berharap mengetik <c-P>peop
memiliki app/assets/stylesheets/admin/sections/people.css.sass
sebagai pertandingan 1 atau 2.
sumber
'g:ctrlp_match_func
. Contoh yang baik dari ini yang digunakan adalah plugin ini: vim.org/scripts/script.php?script_id=4884Jawaban:
Pertanyaan serupa baru saja ditanyakan pada reddit Vim di sini . Saya mulai menggunakan ctrlp-cmatcher sendiri beberapa waktu lalu yang saya temukan jauh lebih pintar dalam mencocokkan file yang tepat. Perhatikan bahwa itu memang membutuhkan komponen yang dikompilasi. Kalau tidak, Anda harus mencoba beberapa pendekatan dalam artikel .
sumber
CtrlP memiliki beberapa mode berbeda,
Ctrl-R
danCtrl-D
.Ctrl-R
menggunakan input Anda sebagai Regex mentah, artinya Anda hanya akan menemukan kecocokanpeople
dengannya secara eksplisit.Ctrl-D
hanya cocok dengan nama file, mengabaikan jalur.Saya percaya fungsionalitas CtrlP default hanya bergabung
.*
ke setiap karakter sebagai karakter mentah, jadi periode diperlakukan sebagai titik. Jika Anda tahu sebelumnya file itu setidaknya memiliki 2 direktori, Anda bisa melakukannya//people
.sumber