読者です 読者をやめる 読者になる 読者になる

$shibayu36->blog;

株式会社はてなでエンジニアをしています。プログラミングや読書のことなどについて書いています。

ファイル名検索して一斉ファイルリネームする

tech emacs

例えばリファクタリングしたいときにクラス名を一斉に変える時がある。その時に対応するファイル・ディレクトリ名を一斉置換したい時がある。






diredの機能であるfind-name-diredと、dired中で置換を行えるwdiredを組み合わせたら出来るということが分かった。

  1. M-x find-name-dired (word)
  2. wdired-change-to-wdired-mode
  3. 置換(query-replace)
  4. 保存


find-name-dired

find-name-diredはfind-dired.elに含まれる機能で、emacsから名前でfind出来るやつ。標準で付いているのでインストールする必要はない。

またもっといろいろfindしたい時は、find-diredしたら良い。findのoptionを渡せる。

wdired

wdiredも24.3現在では標準で入っているようでした。紹介はファイルのリネームが超簡単 wdired / grep の検索結果を直接変更できる moccur-edit. - gan2 の Ruby 勉強日記あたりを参照に。

設定方法、keybindの例は以下のとおり。

;; wdiredの設定
(require 'wdired)
(define-key dired-mode-map "r" 'wdired-change-to-wdired-mode)

これでdiredでrを押したら編集できるようになって、C-x C-sでセーブ出来る。