5

私は通常find-grep-dired、プロジェクト ディレクトリで式を検索します。diredこれにより、その式を含むすべてのファイルの見栄えがよくなります。しかし、私の次のステップは、必ずそれらのファイルの 1 つを開いisearch-forwardて、同じ検索式を使用することです。毎回検索語を 2 回 (編集したいファイルが複数ある場合は 2 回以上) 入力しないようにするにはどうすればよいですか?

4

3 に答える 3

7

これはあなたのために働くはずです:

  1. find-grep-diredいつものように走る
  2. * t(dired-toggle-marks) を押して、すべてのファイルにマークを付けます。
  3. を押しA て開始しdired-do-searchます。プロンプトが表示されたら、入力する代わりに を押しM-pます。両方の関数が同じプロンプト履歴リストを使用するため、find-grep regexp が表示されます。
  4. 最初のファイルの最初の一致に移動します。ここが面白いところです。 を押すだけM-,で、一致したすべてのファイルにまたがる次の一致に移動します。
  5. 利益?(すみません、我慢できませんでした)

すべてを一度に実行したい場合は、次の手順を実行します。

(defun find-grep-dired-do-search (dir regexp)
  "First perform `find-grep-dired', and wait for it to finish.
Then, using the same REGEXP as provided to `find-grep-dired',
perform `dired-do-search' on all files in the *Find* buffer."
  (interactive "DFind-grep (directory): \nsFind-grep (grep regexp): ")
  (find-grep-dired dir regexp)
  (while (get-buffer-process (get-buffer "*Find*"))
    (sit-for 1))
  (with-current-buffer "*Find*"
    (dired-toggle-marks)
    (dired-do-search regexp)))
于 2011-02-11T15:47:38.757 に答える
3

find-grep-dired で使用する検索文字列を kill リング (C-SPACE Ca Mw) に格納できます。次に、キル リング (Cs My) からの文字列を使用してファイルを検索します。キルされたテキストの最後の文字列をヤンクします。

Ch k Cs を使用して、isearch-forward の他の (有用な) バインディングを表示できます。

于 2011-02-11T14:18:20.737 に答える
2

別のアプローチはどうですか?パッケージM-x igrep-findから使ってみてください。igrep.el

デフォルトでは、パターンのすべての出現を検索しますが、次のように動作を変更して、そのような最初の出現のみを見つけることができます。

(setq igrep-options "-i -m 1")   ;; I like -i for case-insensitivity

これにより、ファイルごとに 1 行のコンパイルスタイル バッファー ( という名前) が作成され、その行をクリック (または) すると、一致する行に自動的に配置されます。さらに、バッファ内に一致する行が表示されます。*igrep*C-x `*igrep*

明らかに、ファイルごとに複数の一致を見たい場合は、 の後の数字を変更するか、-mその部分を完全に省略します。

于 2011-02-11T18:03:54.043 に答える