Emacsのバッファのテキストの変更はすべて取り消すことができます.これは
約8000文字まで可能です.それぞれのバッファは変更を個別に記録しています.
変更取り消しコマンドは常にカレントバッファに適用されます.通常それぞれの
編集コマンドは変更取り消し記録に個別の項目を1つ作ります.ただし
query-replace
のようなコマンドは多くの項目を作りますし,自己文字挿
入のような非常に単純なコマンドは,簡便にするためにまとめて扱われます.
undo
).
取り消しにはC-x uやC-_コマンドを使います.最初にこのコマン ドを使ったときは,その直前の変更を取り消します.ポイントは取り消されたテ キストに移動するので,何が取り消されたかがわかります.
C-_またはC-x uコマンドを続けて繰り返し使用すると,順を追っ てもどって,最終的には最初に記録された変更まで取り消します.すべての変更 記録がすでに取り消されている場合は,変更取り消しコマンドはエラーメッセー ジを表示し,何もしません.
他のコマンドを使用すると,変更取り消しコマンドの連続を中断します.中断 するとそれまでの変更取り消しコマンド自身が取り消し可能な普通のコマンドと みなされます. このようにしてC-fなどのそれほど重要な効果のないコマ ンドを入力して,取り消された変更を再生できます.そのあとはさらに変更取り 消しコマンドを使用できます.
バッファを誤って修正したことに気づいたなら,元にもどすには星印がモード 行から消えるまでC-_を繰り返し入力するのが簡単です.そうすれば,先 になされた修正は取り消されます.バッファを意図して変更したのかどうか思い 出せない場合は,C-_を1回入力します.最後に取り消された変更がわかる ので自分の意図を思い出せます.それが誤りだった場合は,取り消し状態のまま にしておきます.また意図したものであった場合には,前に述べた方法により変 更を再生してください.
変更取り消しコマンドによって,モード行から星印が消えたときには,バッファ の内容は最後にファイルを読んだときか,セーブしたときのバッファと同じです.
すべてのバッファが取り消しのための情報を記録するわけではありません.バッ ファ名がスペースで始まるバッファは記録しません.これらのバッファはEmacs の内部で使われていて,利用者が通常見たり編集したりできないテキストを保存 しています.ミニバッファ,Helpバッファ,ドキュメントバッファも取り消しの ための情報を記録しません.
どのバッファも,削除や修正されたテキストの最大約8000の文字を変更取り消 しコマンドによって再挿入するために記録することができます.また記録できる 挿入,削除,変更の数にはそれぞれ限界があります.
undo
コマンドを実行するのにC-x uとC-_の2つのキーがあ
る理由は,undo
は単一文字キーにするほどの重要なコマンドなのですが,
C-_を入力する方がわかりにくいキーボードがあるのです.C-x uの
方は端末についての特別な知識を必要としません.