私は通常find-grep-dired
、プロジェクト ディレクトリで式を検索します。dired
これにより、その式を含むすべてのファイルの見栄えがよくなります。しかし、私の次のステップは、必ずそれらのファイルの 1 つを開いisearch-forward
て、同じ検索式を使用することです。毎回検索語を 2 回 (編集したいファイルが複数ある場合は 2 回以上) 入力しないようにするにはどうすればよいですか?
1439 次
3 に答える
7
これはあなたのために働くはずです:
find-grep-dired
いつものように走る- * t(dired-toggle-marks) を押して、すべてのファイルにマークを付けます。
- を押しA て開始し
dired-do-search
ます。プロンプトが表示されたら、入力する代わりに を押しM-pます。両方の関数が同じプロンプト履歴リストを使用するため、find-grep regexp が表示されます。 - 最初のファイルの最初の一致に移動します。ここが面白いところです。 を押すだけM-,で、一致したすべてのファイルにまたがる次の一致に移動します。
- 利益?(すみません、我慢できませんでした)
すべてを一度に実行したい場合は、次の手順を実行します。
(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 に答える