%3F.png)
のfzf の例 wiki ページディレクトリ内のすべてのファイルを対象にfzfを使ってあいまい検索を行う方法を説明しています。しかし、Wikiページの例では、例えば
ag --nobreak --nonumbers --noheading . | fzf
ファイルは行ごとに分割され、各行は個別に扱われます。
たとえば、次のファイル:
hello
world
検索語が異なる行にあるため、「hello world」という検索語には一致しません。
行単位だけでなくファイル全体を検索するように fzf を使用するにはどうすればよいでしょうか?
答え1
ちょっと汚い解決策があります。
rg --heading --glob "*.txt" . some_directory_path | sed 's/^$/NEWLINEHEREYO/g' | tr '\n' ' ' | sed 's/NEWLINEHEREYO/\n/g' | fzf
説明:
あなたがそうするとき
rg .
どこかで、出力を特定の形式でターミナルに印刷しますが、それをどこかにパイプしようとすると失われます。これを効率的に実行するには、形式が必要であることがわかりました。したがって、形式を維持する --heading フラグです。--glob とディレクトリを追加したのは、自分のユースケースで実行したためであり、コマンドが壊れないように変更したくなかったからです。私はコンピューターにあまり詳しくありません。
次に、sed を使用して、ファイルを区切るすべての空行を NEWLINEHEREYO タグに置き換えます。次に、tr を使用してすべての改行文字 (空行を破壊する) を切り捨て、必要な単一行の出力を生成します。次に、別の sed コマンドを使用して NEWLINEHEREYO を改行に変換し直して改行を再導入し、fzf が文字通り単一行であるかのように検索しないようにします。
非常に非効率的ですが、私の使用例では問題なく動作します。sed、tr、sed コマンドはおそらく 1 つに統合できると思いますが、私にはそれができないほど愚かです。