@Malabarbaは、wgrep
grep / 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-map
toのすべてのインスタンスを置き換えるプロセスを示しています。bind-to-my-map
~/.emacs.d/
bind-to-modi-map
emacsセットアップフォルダーを検索すると、以下の「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 !
。