わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

編集中のファイル名変更は,Diredで

Emacsで,abc.cというファイルを新規に作って編集しようとしたところ,間違って,abd.cというファイルを作ってしまい,ある程度書いてしまった…
こんなとき,シェルを起動するのではなく,EmacsのDiredモードで解決しましょう.
手順は次のとおり.

  1. C-x C-fのあとRETとし,Diredモードに入ります.
  2. ファイル一覧の中でabd.cを見つけ,そこにカーソルを移動します.その際,上下移動のほか,インクリメンタルサーチが使えます.
  3. Rとします.すなわち,Shiftを押しながらRキーを押します.
  4. するとミニバッファに「Rename abd.c to:」とカレントディレクトリが表示されるので,abc.cとファイル名を打ち込んでから,RETです.
  5. qで,Diredモードから抜けます.
  6. 先ほどまで編集していたバッファのファイル名が,abc.cになっています!

これにより,シェルとEmacsを併用したときに起こりがちな,「シェルではリネームしたけれど,Emacsではリネーム前のファイルを編集し続けている」といった事態を避けることができます.
それと,保存前のバッファ,すなわちモードライン*1で「**」となっているものも,その状態は保持したまま,ファイル名を変更することになります.
いつのバージョンのEmacsから,この,バッファも名前変更という機能があるのかはちょっと分かりません.ですが,DiredモードでRというのはdired-do-renameという関数に結びつけられています.そのHelpを読むと,途中に"This command also renames any buffers that are visiting the files."とありました.

*1:これまで「ステータス行」や「ステータスライン」と書いていたものです.「ウィンドウの下部(一番下から2行目の色が反転している行)には,現在起きている様々な状況が表示されます.この行は,モードラインと呼ばれています.」(『入門 GNU Emacs 第3版』, p.8)とのこと.