ctrlpでファイル名の一致を改善するにはどうすればよいですか?


10

私のプロジェクトには次のファイルがあります:

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

タイピング:e app/assets/stylesheets/admin/sections/people.css.sassに飽きてきたので、ctrlpはタイピングを保存する良い方法かもしれないと思いました。しかし、私はそれを私が正気であると考えるもののファイルと一致させることができません。

まず、を使用して<C-p>と入力するとpeop、これらの結果が得られます(「最初の」一致が一番下にあります)。

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

これらの結果は恐ろしいものです。に含まれるどちらのファイルもありませんpeop。私がそれを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_

どちらもリストされていません(!)

私はを通過し:help ctrlp-options、物事を多少改善する単一のオプションを見つけました:

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.

これを設定すると、次の結果が得られ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_

さて、これは少し良いです、私は最初の結果で予想されるファイルの少なくとも1つを取得し、9つ目としてもう1つを取得します。それでも、それでも(!)hulptabellen-object-unit-soort.pdfより良い試合であるとpeople.css.sass考えています

入力すると、people最後に、最初の2つとして予期された2つのファイルが表示されます。

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

このマッチングをより良くするにはどうすればよいですか?私は「ファジーマッチング」を気にしないが、それはすべてのものと誰もが一致する...この場合、私はタイピングが期待されるので、ファジーすべきではない<c-P>peop持っているapp/assets/stylesheets/admin/sections/people.css.sass第一または第二試合のいずれかのよう。


2
ctrlpはカスタムマッチング関数を受け入れることができるようです。これは、'g:ctrlp_match_func このプラグインが使用されている良い例のドキュメントにあります:vim.org/scripts/script.php?script_id
EvergreenTree

回答:


7

同様の質問がVim redditでここで行われました。私は かなり前に自分でctrlp-cmatcherを使い始めましたが、適切なファイルのマッチングではるかにインテリジェントであることがわかりました。コンパイルされたコンポーネントが必要になることに注意してください。それ以外の場合は、記事のいくつかのアプローチを試す必要があります。


4

CtrlPにはいくつかの異なるモードがCtrl-RありCtrl-Dます。Ctrl-R入力を生の正規people表現として使用します。つまり、一致するものだけを明示的に検索します。Ctrl-Dパスを無視して、ファイル名のみに一致します。

デフォルトのCtrlP機能は.*生の文字としてすべての文字に結合するだけなので、ピリオドはピリオドとして扱われます。ファイルが少なくとも2つのディレクトリの深さであることがわかっていれば、実行できます//people

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.