Làm cách nào để tạo ctrlp phù hợp với tên tệp tốt hơn?


10

Dự án của tôi có các tệp này:

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

Khi tôi cảm thấy mệt mỏi với việc gõ :e app/assets/stylesheets/admin/sections/people.css.sass, tôi nghĩ rằng ctrlp có thể là một cách tốt để lưu một số cách gõ. Tuy nhiên, tôi không thể làm cho nó khớp với các tệp theo cách mà tôi cho là một cách lành mạnh.

Đầu tiên, tôi sử dụng <C-p>và gõ peop, và điều đó mang lại cho tôi những kết quả này (trận đấu "đầu tiên" nằm ở cuối):

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

Những kết quả này thật kinh khủng. Không có tập tin với peoptrong đó là ở đó. Ngay cả khi tôi mở rộng nó thành 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ó không liệt kê một trong số họ (!)

Tôi đã đi qua :help ctrlp-options, và tìm thấy một lựa chọn duy nhất giúp cải thiện mọi thứ phần nào:

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.

Sau khi thiết lập, tôi nhận được các kết quả sau 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_

Được rồi, vì vậy điều này tốt hơn một chút, tôi nhận được ít nhất một trong số các tệp dự kiến ​​ở kết quả đầu tiên, và một tệp khác là thứ 9. Nó vẫn hulptabellen-object-unit-soort.pdflà một kết hợp tốt hơn so với people.css.sassmặc dù (!)

peoplecuối cùng cho tôi 2 tệp dự kiến ​​là 2 tệp đầu tiên:

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

Làm thế nào tôi có thể làm cho kết hợp này tốt hơn? Tôi không bận tâm đến "kết hợp mờ", nhưng nó không nên quá mờ, nó phù hợp với mọi thứ và mọi người ... Trong trường hợp này, tôi sẽ mong đợi việc gõ <c-P>peopsẽ có app/assets/stylesheets/admin/sections/people.css.sasscả trận đấu thứ 1 hoặc thứ 2.


2
Dường như ctrlp có thể chấp nhận chức năng khớp tùy chỉnh. Nó nằm trong tài liệu dưới 'g:ctrlp_match_func Một ví dụ điển hình về việc sử dụng này là plugin này: vim.org/scripts/script.php?script_id=4884
EvergreenTree

Câu trả lời:


7

Một câu hỏi tương tự chỉ được hỏi trên Vim reddit ở đây . Bản thân tôi đã bắt đầu sử dụng ctrlp-cmatcher cách đây khá lâu mà tôi thấy thông minh hơn nhiều trong việc khớp đúng tệp. Lưu ý rằng nó không yêu cầu một thành phần biên dịch. Nếu không, bạn sẽ phải thử một số cách tiếp cận trong bài viết .


4

CtrlP có một vài chế độ khác nhau, Ctrl-RCtrl-D. Ctrl-Rsử dụng đầu vào của bạn dưới dạng Regex thô, nghĩa là bạn sẽ chỉ tìm thấy kết quả khớp với peoplenó một cách rõ ràng. Ctrl-Dchỉ khớp với tên tệp, bỏ qua đường dẫn.

Tôi tin rằng chức năng CtrlP mặc định chỉ tham gia .*vào mỗi ký tự dưới dạng một ký tự thô, vì vậy một khoảng thời gian được coi là một khoảng thời gian. Nếu bạn biết trước tập tin sâu ít nhất 2 thư mục, bạn có thể làm //people.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.