@Malabarbaは、wgrepgrep / ack / agの結果を編集するためのパッケージの使用に言及しました。
agパッケージを使用してwgrep-ag'ag'ged結果の編集を実現するために、パッケージとパッケージをどのように使用するかの詳細なウォークスルーを書きたいと思いmultiple-cursorsます。
これらのパッケージは、Melpaから入手できます。また、システムにag別名the_silver_searcherをインストールする必要があります。
このウォークスルーは、ag見つかったすべての/選択した場所で単一行の編集を行う方法を探している場合に適用されます。
agシステムと上記のemacsパッケージにインストールします。
ag指定した正規表現に一致するコンテンツを持つファイルの検索をサポートします。agプロジェクトのルートがどこにあるかを知る最も簡単な方法は、.gitそこに空のフォルダーを置くことです。次に、を使用して検索を行いM-x ag-project-regexpます。
ag検索の結果バッファーは、デフォルトでは編集できません。編集可能にM-x wgrep-change-to-wgrep-modeするには、wgrep-default bindingを実行または使用しますC-c C-p。
すべてのファイルで「abcdef」を「ghijkl」に変更する必要がある場合は、「abcdef」を検索すると、ag結果バッファーにその文字列を含むすべての行が表示されます。次に、そのバッファを編集可能にし、それらの文字列を手動で変更するとM-x wgrep-finish-edit、デフォルトのバインディングを実行または使用するときに、それらの変更が実際のファイルバッファに反映されますC-c C-e。を使用query-replace-regexpして、その検索置換を実行することもできます。
multiple-cursors複数の編集が同時に行われている場所のリアルタイムのフィードバックを確認できるように、高速リファクタリングに使用することを好みます。そのag結果バッファーで置換する文字列を強調表示し、呼び出してM-x mc/mark-all-like-this、複数のポイントで同時に編集されているものが表示されるのをa敬の念で編集します。
上で述べたように、編集に満足したらC-c C-e、実際のバッファの変更を「反映」します。バッファはまだ保存されていません。
すべてのバッファを保存するには、通常、emacsのデフォルトC-x s !バインディングを使用して一度に行います。
スクリーンショットの使用例の例を次に示します。
これは、my のbind-to-modi-maptoのすべてのインスタンスを置き換えるプロセスを示しています。bind-to-my-map~/.emacs.d/
bind-to-modi-mapemacsセットアップフォルダーを検索すると、以下の「ag」の結果が表示されます。
このバッファは読み取り専用です。
M-x wgrep-change-to-wgrep-modeを強調表示した後、を-modi-map使用M-x mc/mark-all-like-thisしてその選択のすべてのインスタンスを選択し-my-map、それらの選択をに編集した後、次のようになります。

青いハイライトは、を押すと変更される行を示しますC-c C-e。
を押すとC-c C-e、このスクリーンショットの実際のファイルに反映された変更を確認できます。

次に、を使用して変更されたすべてのファイルを保存しますC-x s !。