DSCF1623.jpg

Emacsには Dired というファイル管理の機能があるので、ターミナルやGUIなファイラーを起動しなくてもEmacs内でたいていのことはできてしまいます。

しかしDiredの弱点は、ファイル名の一部だけを変更するのが意外と不便なところです。変更するには、いつもファイル名全体を打ちなおす必要があります。(一度入力したファイル名なら M-p で履歴を辿れるので不便さを回避しているけれど)

何か便利な方法はないかとlist-packageを探してみたら、素晴しいモードがありました。すでに有名なのかもしれないけれど、僕のように知らない人もいるかもしれないので紹介します。

その素晴しいパッケージとは wdired です。

W ritable dired の略で、Diredバッファが一時的に編集可能なテキストファイルに切り替わります。Emacsに慣れた人ならテキストを編集するいつもの感覚でファイル名を自由自在に変更できるのです。

インストールについては、僕が使っている GNU Emacs 25.0.50.1 ではビルトインなパッケージなのでインストールは不要でした。

それでは実際の使用方法について説明しましよう。

操作方法

まずはフォルダを普通に開きます。次のようにDiredモードで開いているはず。 wdired1.jpg

ここで次のコマンドを実行します。

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

モード行は Dired から Editable Dired へ切り替わります。 wdired2.jpg 見た目はほとんどDiredと同じに見えますが、実はDired風のテキストファイルに変っています。

僕は毎回コマンドを打つのは面倒なので dired-mode-hook にカスタマイズで

(lambda nil (define-key dired-mode-map "\C-c\C-e" (quote wdired-change-to-wdired-mode)))

を追加して C-cC-e で切り替えるようにしています。

通常のテキストファイルを編集する感覚で、ファイル名を編集できます。

例えば text1.txt から text1 を削除して wdired3.jpg 代りに new を入力。 wdired4.jpg この時点ではまだ実際のファイル名が変更されているわけではありません。

実際に変更を反映するには C-cC-cC-xC-s (wdired-finish-edit) を実行します。

キャンセルする場合は C-cC-kC-c ESC (wdired-abort-changes) を実行します。

Editable Dired モードのときに可能なのは、ファイル名の部分の編集だけです。ファイルのモードやオーナーなど他はすべて読取専用になっています。

ファイルの移動も可能

さらにファイル名の変更だけではなく移動も可能です。次にようにファイル名にパスを記載するだけでOK。 素晴しい。 wdired5.jpg 絶対パスでも相対パスでもいけます。

ただし存在しないディレクトリを指定した場合はエラーになります。自動で新しいディレクトリを作成してくれれば便利だと思うのだけど。

テキストを編集するのと同じ

素晴しいのは通常のテキストを編集する際のテクニックがそのまま使えるところです。例えば、

  • テキストの置換 M-%
  • テキストの動的補完 M-/
  • 大文字、小文字、キャピタライズ

などが違和感なく使えます。

動作環境

GNU Emacs 25.0.50.1 OS X Yosemite 10.10.5