2006-12-04

Emacs の dired でファイル名を編集するマイナー・モード wdired

先日、複数のファイル名をまとめて変更する方法として、Emacs の dired を使う方法を紹介した。

そしたらコメント欄に、こういうときは wdired が便利です とのアドバイスが入った。これがとても便利だったので紹介エントリーを書いてみる。

wdired

dired 内で、

  • M-x wdired-change-to-wdired-mode

を実行すると、ファイル名の部分だけ Emacs で編集可能なマイナー・モードに入る (wdired は、Writable dired の略)。これが wdired モード。編集可能というのは、文字通りテキスト編集する感覚でファイル名を変更できるということ。

ファイル名の変更が終わったら、C-c C-c (wdired-finish-edit) で wdired モードを抜ける。もし、ファイル名の変更をキャンセルしたいなら、C-c ESC (wdired-abort-changes) を使う。

ファイル名の一括置換

複数のファイル名をまとめて変更するには、wdired モードに入って置換コマンド M-% (query-replace) を実行する。

wdired モードでは、C-c C-c するまでファイル名の変更は反映されないので、置換に失敗しても再チャレンジできる安心感がある。加えて、置換が普段の操作と同じなのが嬉しい。

ファイルの移動

wdired モードでファイルを移動するには、ファイル名を絶対/相対パス指定する。例えば

foo.txt

というファイルがあったとしたら、

~/bar/foo.txt

で ~/bar ディレクトリーにファイルが移動する。また

../foo.txt

とすれば、親ディレクトリーにファイルが移動する。

wdired のインストール

wdired は Emacs の標準 Elisp。インストールする手間はいらない。

ただし、Emacs-21 では wdired モードの設定がされてない。wdired を使うには、次のコードを .emacs に追加する必要がある。

(autoload 'wdired-change-to-wdired-mode "wdired")

なお、Emacs 22.* では、上記 autoload 設定がデフォールトでされている。Emacs 22 系だと、本当にすぐ使い始めることができる。

キーバインドの設定

wdired モードに入るのに、M-x wdired-change-to-wdired-mode と長いコマンドを打つのは大変と思う方もおられやう。そういう人は、キーバインドを設定しておくといい。

(eval-after-load "dired"
  '(lambda ()
     (define-key dired-mode-map "r" 'wdired-change-to-wdired-mode)))

上のコードを .emacs に入れておくと、r キーで wdired モードに入るようになる。

ref

No comments:

Post a Comment