テキストを検索および置換できる一連のファイルを定義したいと思います。
明確にするために:
たとえば、特定のディレクトリにあるすべてのファイルxk * .tex(およびバックアップファイルを除く)を検索できるようにしたいと考えています。また、すべてのファイルdd * .shおよびee * .clsで、「不確実性」などの表現を「不確定性」に変更できるようにしたいと考えています。
これを行うための標準的な方法は何ですか?
テキストを検索および置換できる一連のファイルを定義したいと思います。
明確にするために:
たとえば、特定のディレクトリにあるすべてのファイルxk * .tex(およびバックアップファイルを除く)を検索できるようにしたいと考えています。また、すべてのファイルdd * .shおよびee * .clsで、「不確実性」などの表現を「不確定性」に変更できるようにしたいと考えています。
これを行うための標準的な方法は何ですか?
回答:
明確に定義されたプロジェクトで作業している場合は、を介してそのプロジェクト内のoccur
とgrep
機能を使用できますprojectile
。githubの説明から、によって提供されるさまざまな機能の中でprojectile
、次のことが可能です。
すべてのファイルが同じディレクトリにある場合は、次の手順を実行できます。私はこれをコメントで与えられた2番目の例に基づいています:
dired
dired
モードで関連するディレクトリを開きます。dired-mark-files-regexp
そのディレクトリで実行します。^dd.*\.sh$
これは、に相当する正規表現ですdd*.sh
。これらのファイルはでマーク*
され、配色によっては別の色で強調表示される場合もあります。^ee.*\.cls$
編集するすべてのファイルがマークされるまで、必要な正規表現(例:)を使用して、必要に応じて手順3を繰り返します。dired-do-query-replace-regexp
マークしたファイルで実行します。uncertainty
and indeterminacy
を入力します。(これは大文字と小文字が区別されると思います。大文字と小文字を区別しないようにする必要がある場合は、正規表現が必要になることがありますが、わかりません。)そしてそれがアイデアです。別のフォルダでこれを数回繰り返す必要がある場合は、手順2〜6をマクロとして記録できます(C-x (手順1のC-x )後で、手順6の後に押します)。そして、elispにあまり慣れていない場合でも、そのマクロを使用してelispに変換insert-kbd-macro
し、有用な関数にハックしてみることができます。
S-q
という意味ではありませんshift+q
、それが意味しますsuper+q
。Q
もしそうなら、あなたはただ書くべきですshift+q
。これを反映するようにコメントを編集しました。
S-q
意味はありませんshift+q
。super+q
書かれるでしょうs-q
。
を使用M-x find-name-dired
して、特定の名前パターンに一致するすべてのファイルへのリンクを含む、diredバッファを取得できます。
指定M-x find-grep-dired
されたgrepパターンと内容が一致するファイルを含むdiredバッファーを取得するために使用します。
そのようなコマンドはもっとたくさんあります。どちらが最適かは要件によって異なります。質問の更新を検討してください。
次に、マクロを使用してファイルのリストをトラバースできます。例としてブライアンの答えを見てください:https : //emacs.stackexchange.com/a/9497/2005
dired
特定のディレクトリにあるファイルのサブセットを検索して置換する方法を確認することをお勧めします。