helmおよび/または発射物を持つディレクトリ内の再帰的なgrep?


11

ディレクトリでの再帰的なgrepは最も単純なものでなければなりませんが、それを動作させるためのレシピをまだ見つけていません。私は次のコマンドの間でジャグリングしていて、その中に機能が埋め込まれているのかわかりません:

  • helm-find-files:問題は、これがディレクトリを再帰的に見つけるのが本当に悪いことです。
  • projectile-find-dir:これはディレクトリを見つけるのに最適です!ただし、helm completeを使用しても、helmモードで終了しないため、C-u C-sコマンドはここでは機能しません。
  • helm-find:再帰権を取得しますが、ディレクトリではなくファイルを対象とします
  • helm-projectile-find-dir:私が欲しいもののようです。

1
私はそのためにagとagモードが大好きです、シルバーサーチャーは片手で背中を結んでgrepを打ちます:-)が、発射体を認識させる方法がわかりません
Tom Regner

Mx発射体-ag多分?(«projectile-prefix»Aまたは«projectile-prefix»a –バージョンによって異なります)
Mekk

2
元のポスターへ:あなたの目的が何なのかよくわかりません。projectile-ackとprojectile-agはどちらも、(全体の)発射物プロジェクト内で優れた再帰的なグループです。彼らはあなたが必要としているものではありませんか?
Mekk

回答:


10

次の2つの方法があります。

  • 使用helm-projectile-grep/ack/ag:プロジェクトルートから始まるすべてのものを検索できます。後で検索結果を保存する場合は、F3またはを押しTABてアクションメニューに切り替え、3番目のアクションを選択します。hgrepバッファをナビゲートするには:

    • C-<down>:次の試合に移動し、試合を開きます。
    • C-<up>:前の試合に移動して、試合を開きます。
    • M-<down>:試合を開かずに次の試合に進みます。
    • M-<up>:試合を開かずに次の試合に進みます。
    • C-o:現在の一致を別のウィンドウで開きます。
    • RET:現在のウィンドウで現在の一致を開きます。
  • 使用helm-projectile-find-dirhelm接頭辞に注意してください。helm-projectile一般にパッケージから適切なHelmコマンドを使用する必要があります):目的のディレクトリに絞り込み、を押しC-u C-sてそのディレクトリを再帰的に検索します。を押さない場合C-uは、そのディレクトリを検索するだけで、さらに深く検索することはありません。

お役に立てば幸いです。


1
発射物検索結果内でこの「タブ」アクションを通知することで、大きな利益を得ることができるようになりました。ありがとうございました。ありがとうございます。
2016年

5

ディレクトリ内の再帰的なgrepは最も簡単なものでなければなりません

現在のディレクトリ内の単純な再帰grepのM-x grep場合は、次のようにしますRun grep (like this): grep -nHr "pattern"。ミニバッファー内:(-rフラグに注意してください)。

あなたも興味があるかもしれませんrgrep

rgrepは、
`grep.el ' 内のインタラクティブに自動ロードされるコンパイル済みLisp関数です。

(rgrep REGEXP&optional FILES DIR CONFIRM)

DIRをルートとするディレクトリツリーのFILESにあるREGEXPを再帰的にgrepします。検索は、シェルパターンFILESに一致するファイル名に限定されます。FILESは、grep-files-aliases', e.g. enteringchで定義されている省略形を使用できます。これは、*。[ch]と同等です。


これは、コンテキスト内にあるはずの発射物とは関係ありません。
RichieHH

2

他の回答で言及されているツールに加えて、再帰的なgrepパターンに一致するすべてのファイルを含むバッファーをfind-grep-dired作成するもう1つの素晴らしい機能がありますdired

実行find . \( -type f -exec grep -q -e my-regular-expression \{\} \; \) -lsして結果をdiredバッファに表示するだけです。


1

あなたは試すことができhelm-do-grepます。プレフィックスargを付けて呼び出すと、Helm Wikiで説明されているように、再帰的なgrepが得られます。

helm-find-filesを起動せずにhelm-do-grepを再帰的に起動する場合は、次のようにします。

Cu helm-command-prefix-key Mg s

注:Mgの前にCuを押すのを忘れた場合は、ファイルを選択した後で行うことができます。

検索するファイルのカテゴリを選択するよう求められます。たとえば、*。elのようなワイルドカード構文を使用します(.elファイルのみを検索します)。

デフォルトでは、カーソルがファイル名にあるときにポイントのファイルの拡張子が使用されます。カーソルがディレクトリのルートにある場合、ディレクトリにあるすべてのファイル名拡張子が一致せず、grep-find-ignored-filesがプロンプトに挿入されます。

次のように試してください:

C-u helm-command-prefix-key M-g s


0

helm-projectile-find-dirおそらく適切な機能です。あなたはできる

  1. 次のようにディレクトリを検索します projectile-find-dir
  2. ただし、Helmモードで終了するC-u C-sと、必要に応じて再帰検索を実行できます。

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