fzfで正規表現を使用する方法は?

fzfで正規表現を使用する方法は?

test1たとえば、vimでは、test2などtest9の名前を検索できます/\<test\d\>。私はtest<num>名前にその単語を含むファイル名を見つけるのと同じ「機能」が欲しいです。私はこれを試しました:

ここに画像の説明を入力してください。

しかし、ご覧のように動作しません。

私のFZF環境変数は次のとおりです。

  • $FZF_DEFAULT_COMMAND rg --files --hidden --glob "!.git/*"

  • $FZF_DEFAULT_OPTS --prompt=' ' --cycle --preview='bat {}' +i --bind=ctrl-j:preview-half-page-down,ctrl-k:preview-half-page-up

vimとsedで正規表現パターンを使用してファイルを検索するにはどうすればよいですか?

答え1

fzfがこれを行うことができるかどうかわかりません。ただし、^(次に終わる必要があります)、$(次に終わる必要があります)、!(含まれてはいけません)などの特殊文字がいくつかあります。ファイル内で検索する場合は、次のものを使用できます。 シルバー探索者(ag)またはリーグレップ(rg):Agまたは、コマンドを使用してインストールされたとします。:Rg

それぞれ、スペースで区切られた複数のパターンを追加する利点を享受することもできます。たとえば、^core .py$ !test「core」で始まり、「.py」で終わるファイルと一致します。 「test」が含まれていません。引き続きパターンを追加して検索結果を絞り込むことができます。

答え2

許可された回答に加えて追加したいと思います。検索パターンの空白も重要です。、ファジィ検索モードパラメータを分離するため。

このファイルツリーがあるとしましょう。test.txt各ディレクトリにはファイルがあります。test

temp/dir1/test.txt
temp/dir1/test

temp/dir2/test.txt
temp/dir2/test

temp/dir3/test.txt
temp/dir3/test

tempパスのどこかに検索パターンがある上記の3つのファイルをすべて探してみましょう。そして名前がtestありますファイル拡張子なし:

基本検索モードではfzf:

  1. この検索で​​は、以下を見つけることができます。ファイルなし:
    temp/test$
    
  2. この検索で​​は、以下を見つけることができます。6つのファイルすべて:
    temp/test
    
  3. だから探したいならtest拡張子のないファイルのみ、あなたはする必要があります検索パターンにスペースを追加する、このように!この検索で​​は、以下を見つけることができます。testファイルが3つだけですファイル拡張子がなく、tempパスに高いパターンがある場合:
    temp /test$
    

2つのファジー検索パターンの間にスペース(tempおよび)を追加すると、/test$大きな違いがあります!

この検索で​​は、次の6つのファイルもすべて検索します。

temp /test

要約すると、test3つの拡張子を持たないファイルを見つけるには、次の手順を実行する必要があります。ファジー検索パラメータを区切るには、スペースを使用してください。$「行末」を表すために末尾に使用されます。

temp /test$

もちろん、ファジー検索パラメータ間の空白に対する同じ要件が^「行開始」検索文字にも適用されます。 (この例ではこれをうまく説明しませんが、原則は同じです。):

^temp /test

関連情報