本ブログ「Linuxとは日記」は移転しました
移転先の「Emacsのundoとredoを使いやすくする」はこちら

2010年08月07日

Emacsのundoとredoを使いやすくする

Emacsには1つ前のテキスト編集をやり直すundo(アンドゥ)という機能があります。WindowsなどではCtrl + zで実行できるあれです。

デフォルトでは、C-_とC-/、そしてC-x uにundoが割り当てられています。2つ分取り消したい場合は、C-_を2回実行するといったように、戻りたい分だけundoコマンドを実行します。

デフォルトのEmacsでは、undoの取消を行うredoができないので、undoをし過ぎた状況になってしまうと非常に困難な状況になってしまいます。

そこで、undoをさらに使いやすくするEmacsプラグインundo-treeを導入します。undo-treeは、新しいバッファに枝のような形の図を表示することによって、簡単にundo、redoができるプラグインです。

通常のundo-treeでも充分に便利なのですが、枝が描画されたバッファとウィンドウがそのまま表示されてしまうので、ディスプレイのスペースが余っていない場合は、毎回ウィンドウを整える必要があります。

少し調べて見たところ、どうやら、undo-treeで出力されたバッファと、ウィンドウを削除して、undo-treeを実行する前の状態に戻してくれるようにカスタマイズしたものを開発してくれている方がいました。せっかくなので、そちらをご紹介します。

まず、gistからundo-tree.elをダウンロードします。downloadというボタンからファイルをダウンロードして展開するかgitをインストールしている場合は、次のコマンドでelファイルをダウロードしてください。

$ git clone  git://gist.github.com/301447.git undo-tree

あとは、ダウロードしたファイルを、load-pathの通ったディレクトリに配置して、次の設定を.emacsに追記します。

;;;; tree-undo
(when (require 'undo-tree nil t)
  (global-undo-tree-mode))

使い方は、C-x uでtree-undoのバッファを表示します。そしてp,nで上下f,bで左右、qでバッファを閉じます。C-_やC-/に割り当てられているundoは今まで通りに動作します。

さらに、undo-treeをインストールしたことによって、redo関数を使えるようになります。デフォルトでは、C-?でredoを行うことができるので、ツリーを出すのは少しおおげさと思える場面では、C-?でredoを行うことができます。

タグ:Emacs REDO Undo
posted by Linuxとは at 00:08 | Emacs | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。