情報源:1
emacs proユーザーの場合:
- dir内のファイルを一覧表示するにはdiredを呼び出し、すべてのサブディレクトリが必要な場合はfind-diredを呼び出します。
- 必要なファイルをマークします。【%m】とタイプすると、正規表現でマークできます。
- Qと入力して、dired-do-query-replace-regexpを呼び出します。
- 検索正規表現を入力して文字列を置き換えます。〔☛common elisp regexパターン〕
- 出現ごとに、yを入力して置き換え、nを入力してスキップします。操作全体を中止するには、[Ctrl + g]を入力します。
- タイプ!確認せずに現在のファイル内のすべての出現箇所を置き換えるには、Nは、現在のファイルの残りのすべての可能な置き換えをスキップします。(Nはemacs 23のみ)
- これ以上質問せずにすべてのファイルを置換するには、Yと入力します(Emacs 23のみ)。
- ibufferを呼び出して、開いているすべてのファイルをリストします。保存されていないすべてのファイルをマークするには、[* u]と入力し、マークされたファイルをすべて保存するにはSと入力し、すべてを閉じるにはDと入力します。
Emacs初心者向けのステップバイステップガイド
ターゲットファイルを選択
コマンドラインインターフェイスプロンプトで「emacs」と入力してemacsを起動します。(または、グラフィックスユーザーインターフェイス環境の場合は、Emacsアイコンをダブルクリックします)
ディレクトリ内のファイルの選択
最初に、置換するファイルを選択する必要があります。グラフィカルメニューの「ファイル」▸「オープンディレクトリ」を使用してください。Emacsはディレクトリパスを尋ねてきます。ディレクトリパスを入力し、Enterキーを押します。
これで、ファイルのリストが表示されます。次に、正規表現の検索/置換を実行するファイルにマークを付ける必要があります。カーソルを目的のファイルに移動してファイルにマークを付け、mを押します。uを押してマークを解除します。(サブディレクトリを一覧表示するには、カーソルをディレクトリに移動してiを押します。サブディレクトリの内容が下部に表示されます。)すべてのファイルを正規表現でマークするには、【%m】と入力し、次に正規表現パターンを入力します。たとえば、すべてのHTMLファイルにマークを付ける場合は、【%m】、。html $の順に入力します。(マークコマンドのリストは、グラフィカルメニューの[マーク]にあります(このメニューは、diredモードのときに表示されます)。
ディレクトリとそのすべてのサブディレクトリ内のファイルを選択する
数百のサブディレクトリを含むディレクトリ内のファイルを検索/置換する場合は、これらのファイルをすべて選択する方法を次に示します。
find-diredを呼び出します。(【Alt + x】を押してコマンドを呼び出す)次に、ディレクトリ名を入力します、/ Users / mary / myfiles
注:UNIXの非グラフィカルテキストターミナルでemacsを使用していて、【Alt + x】が機能しない場合、同等のキーストロークは【Esc x】です。
Emacsは「Run find(args):」というプロンプトを表示します。すべてのHTMLファイルを置き換える必要がある場合は、-name "* html"と入力します。どのような種類のファイルでもかまいませんが、そのディレクトリの下にあるすべてのファイルだけの場合は、「-type f」を指定します。
次に、上記のようにファイルにマークを付けます。
インタラクティブな検索/置換
これで、インタラクティブな検索置換を実行する準備ができました。簡単にするために、「quick」という単語を「super」に置き換えたいとしましょう。次に、dired-do-query-replace-regexpを呼び出します。正規表現文字列と置換文字列の入力を求められます。「quick」と入力してから、「super」と入力します。
これで、emacsはパターンを使用してファイルをチェックし、一致が発生するたびに停止して表示します。これが発生すると、emacsがプロンプトを表示し、変更を行うか、変更をスキップするかを選択できます。変更するには、yと入力します。スキップするには、nと入力します。emacsで現在のファイルにそのような変更をすべて加えたい場合は、「!」と入力します。
行った変更を保存せずに操作全体をキャンセルする場合は、【Ctrl + g】と入力し、メニュー〖[ファイル]▸[Emacsの終了]を使用してemacsを終了します。
変更されたファイルの保存
さて、上記の試練を経験した後、あなたがしなければならないもう一つのステップがあり、それは変更されたファイルを保存することです。
emacsバージョン22以降を使用している場合は、ibufferを呼び出してバッファーリストモードに入り、次に[* u]と入力してすべての未保存ファイルにマークを付け、Sと入力してすべて保存します。(シフトシフトです)
emacsバージョン21を使用している場合は、これを行うことができます。list-buffersを呼び出し、カーソルを保存するファイルに移動して、sと入力します。後で保存するためにファイルにマークを付けます。マークを外すにはuと入力します。完了したら、xと入力して、保存対象としてマークされたすべてのファイルの保存を実行します。(emacsでは、開かれたファイルは「バッファ」と呼ばれます。そこで他のことは無視してください。)
上記のオプションの代わりに、save-some-buffers【Ctrl + xs】を呼び出すこともできます。次に、emacsは未保存の各ファイルを表示し、保存するかどうかを尋ねます。
注:emacsの正規表現は、PerlやPythonの正規表現とは異なりますが、類似しています。概要と一般的なパターンについては、Emacs Regexを参照してください。