Emacs で wdired と moccur-edit を使っていない人は(ry
Emacs で wdired と moccur-edit を使っていない人は(ry と思ったので紹介します。
wdired
wdired ではファイルのリネームが超簡単になります。
mv やエクスプローラで F2 を押してリネームをしている人は wdired を使うべし。
dired で ~/tmp を表示すると以下の様になっているとします。
/home/taro/tmp: 合計 273 drwxr-xr-x 6 taro taro 928 2006-12-26 10:41 . drwxr-xr-x 66 taro taro 3632 2006-12-26 10:25 .. -rw-r--r-- 1 taro taro 2232 2006-11-24 21:36 EndsWithTest.cpp -rw-r--r-- 1 taro taro 670 2006-11-24 21:24 EndsWithTest.h -rw-r--r-- 1 taro taro 738 2006-11-24 21:49 JoinTest.cpp -rw-r--r-- 1 taro taro 421 2006-11-24 21:45 JoinTest.h
この状態で、"r" キーを押すと、 dired のバッファが編集可能になります。(普段はRead onlyですよね。)
例えば、ファイル名、JoinTest.cpp を StrJoinTest.cpp に変えたければ、直接ファイル名を編集してしまえば良いです。
また、例えば、拡張子 cpp を cxx に変更したいとすれば M - % で確認置換を起動し、cpp -> cxx と置換すればOKです。
ファイル名の変更が確定したら C-x C-s (バッファの保存と同じキー操作)とやれば変更が実際に反映されます。
更にうれしいのは、例えば test.cpp をバッファとして開いていたとして、それを test.cxx にリネームした場合にバッファを test.cxx として開き直してくれる点です。
詳細は http://www.bookshelf.jp/soft/meadow_25.html#SEC292 を参照してください。
moccur-edit
M-x moccur-grep などを利用して grep している人は多いと思いますが、この検索結果を直接変更できるのが moccur-edit です。
例えば、*.cpp なファイルの中で printf を デバッグ用の安全な _printf に置き換えたいとします。
その場合 M-x moccur-grep-find して、まずディレクトリを指定します。
Direcotory: ~/contrib/
次に printf を検索に指定します。FileMask を指定していない人を良く見かけますがしぼった方が検索が速い場合が多いです。
今回は拡張子 .cpp で終わるファイルが対象です。
Input Regexp and FileMask: printf .cpp$
検索したら、いっぱい引っかかりました。
Lines matching printf Buffer: File (grep): /home/taro/contrib/Emulators/infones/InfoNES_System_Mona.cpp 154 printf("InfoNES for Mona v0.96J\n"); 155 printf("copyright (c) 2005, bayside.\n"); 156 printf("\n"); 157 printf("usage: infones.ex5 [*.nes]\n"); 158 printf("keyconfigration:\n"); 159 printf(" START : 's'\n"); 160 printf(" SELECT : 'a'\n"); 161 printf(" ButtonA: 'x'\n"); 162 printf(" ButtonB: 'z'\n"); 163 printf(" SLOWER : 'k'\n"); 164 printf(" FASTER : 'l'\n"); 165 printf(" EXIT : 'ESC'\n"); 451 printf( "InfoNES:%s\n", pszMsg ); 461 printf( "InfoNES:%s\n", pszMsg ); Buffer: File (grep): /home/taro/contrib/Emulators/monamona/BfMain.cpp 93 printf("%c", *mainptr); たくさん続く
この printf を _printf に置換するんですが、全てのファイルを開き編集するのは件数的に現実的ではなさそうです。
そのような場合には、wdired のときの操作と同じで、 "r" キーで編集モードに入ります。
すると、検索結果のバッファが編集可能になるので、M - % (置換) で、printf -> _printf と置換してやります。
そして置換が終わったら C-x C-s で保存すれば編集が反映されます。
moccur-edit の優しいところは
- 変更点が色づけされて目立つ
- 検索結果の編集を間違えた場合は C-x k で編集をキャンセルできる
など細かいとところで使い勝手が良い点です。
詳細は、http://www.bookshelf.jp/soft/meadow_50.html#SEC743 を参照してください。