リドゥ

Emacsでは、過去に実行したコマンドをそのまま再実行する事が可能である。 これをredo(リドゥと読む)という。一般的にundo を取り消す(undoundoする)ことをredoという場合が あるが、これをredoの定義とするならば、これはEmacsのundo の中に含まれている機能である。Emacsでいうredoは、直前の実行を繰 り返すという意味である。

Emacsで行なわれるredoは、すべての動作を再実行するものではなく、 過去に実行したコマンドのうち、一般になんらかの入力を必要とするもの、も しくは、M-xの後になんらかのコマンドを続けて打って実行したものを 再実行できるものである。例えば、aの入力などは、aのキーを 押せば入力できるため、わざわざ複雑な操作をしてredoする必要がな い。しかし、ファイルの読み込みなどは、ファイル名の入力操作が必要なため、 再実行するよりはredoした方が便利となる。このようなものに対して、 redoが用意されている。

redoの仕方は、
    C-x ESC ESC
である。すると、画面再下行に、
    Redo:(find-file "/home/yashiro/src/test.c" nil)
のような感じで、直前に実行したコマンドが表示される。書き方が、入力した ものと異なっているが、これがEmacs Lispの書式である。入力したものは、内 部でこのように表現されて処理されていると思ってほしい。この例でいうと、 直前のコマンドは、自分のディレクトリの下の、~/src/test.cと いうファイルを読み込み(C-x C-f)したということである。

さて、これらは編集することが可能である。編集の仕方は通常の編集と変わら ない。ただし、Lispなので、括弧等をいじると、動作しなくなる可能性がある ので、明らかにこれは自分が書いた部分であるという部分以外はいじらない方 がいいであろう。実行してもいい状態になったら、リターンキーを打つ。この 時に、カーソルはどこにあっても構わない。

最初のうちは、一番便利なredoの使い道はファイル読み込みであるか もしれない。ファイルを読み込んだ時に、一文字間違って指定してしまう場合 がある。このような場合に、redoをして、ファイル名を訂正して、リ ターンキーを打つと、正しいファイルが読み込まれる。ただし、この redoの時には、ファイル名の補完などはできないので、注意が必要で ある。

さて、このredoであるが、直前に実行したコマンドよりも前のコマン ドを実行することも可能である。このようなときには、C-x ESC ESCの後で、 直前のコマンドが表示されている状態で、
    M-p
と打つと、その一つ前のコマンドが表示される。同様に、
    M-n
を打つと、その一つ次のコマンドが表示される。これで、目的のコマンドを最 下行に表示したら、その後の操作は、さきほどと同じである。これによって、 使用したい過去のコマンドを選択して、それを編集して実行することが可能と なる。

redoしたコマンドは、次のredoの時に、最新の記録となっており、 それ以前の記録(一般にコマンドの記録を履歴、もしくはヒストリと いう)は変化しないで残っている。


前[grep]  次[help-for-help]
戻る