この記事 は、「アンドゥ中に方向を逆にすることができ、アンドゥを元に戻すことができるため、Emacsにはリドゥがあります」と書かれています。
これは何を意味するのでしょうか?ユーザーはどのようにしてEmacsで「やり直す」ことができますか?
ショートバージョン:元に戻すを元に戻します。元に戻した後、次のような非編集コマンドを実行した場合 C-f、次のアンドゥでアンドゥが取り消され、やり直しが行われます。
長いバージョン:
元に戻すは、操作のスタックで操作していると考えることができます。何らかのコマンドを実行する場合(次のようなナビゲーションコマンドも C-f)一連の取り消し操作の後、すべての取り消しが操作スタックにプッシュされます。そのため、次の取り消しは最後のコマンドを取り消します。次のような操作シーケンスがあるとします。
今、元に戻します。最後のアクションを取り消して、次のリストが表示されます。
この時点で元に戻す以外の操作を行う場合-たとえば、 C-f、操作スタックは次のようになります。
今、元に戻すとき、最初に元に戻すのは元に戻すです。元のスタック(およびドキュメントの状態)の結果:
変更コマンドを実行して元に戻すシーケンスを中断すると、そのコマンドは元に戻す後に追加されるため、最初に元に戻すことができます。あなたがヒットする代わりに「バー」をバックスペースしたと仮定します C-f。その後、あなたは持っていただろう
この追加/再追加は無限に起こります。慣れるのに少し時間がかかりますが、Emacsに非常に柔軟で強力な元に戻す/やり直しのメカニズムを提供します。
元に戻すには: C-_
元に戻した後にやり直すには: C-gC-_
複数回入力 C-_ 元に戻したものをやり直す C-_ emacsコマンドを複数回やり直すには、コマンドを実行してから入力します C-xz そして何度も入力します z コマンドを繰り返すキー(マクロを複数回実行する場合に興味深い)
C-/
C-/
C-/
C-g
C-/
C-g
C-/
C-/
です。 C-g
は繰り返されないことに注意してください。C-g
C-/
C-g
C-/
C-/
最後の取り消しコマンド以降にキーを押した場合(文字を入力するか、カーソルを移動するだけ)、次の取り消し/やり直しの前にC-g
を入力する必要はありません。 C-g
は、それ自体では何もしませんが、元に戻すシーケンスの終了を通知する非元に戻すキーとしてカウントされる、単にヒットする安全なキーです。 C-f
などの別のコマンドを押しても機能します。カーソルがあった場所から移動するだけです。
意図していないときにC-g
または別のコマンドを押して、間違った方向に元に戻している場合は、単にC-g
を押して方向を逆にします。必要なアンドゥに到達する前に、偶発的なやり直しとアンドゥを完全に元に戻す必要がありますが、C-/
を押し続けると、最終的に目的の状態に到達します。実際、C-g
を1回押してからC-/
を十分に押すと、バッファーがこれまでにあったすべての状態に到達できます。
C-/
以外のundo
の代替ショートカットは、C-_
、C-x u
、およびM-x
undo
です。
Emacsのアンドゥシステムの詳細については、Emacsマニュアルの ndo を参照してください。
より一般的な元に戻す/やり直し機能が必要な人のために、誰かが undo-tree.el
と書いています。 Emacs以外のアンドゥのルックアンドフィールを提供しますが、アンドゥ履歴の「ツリー」全体へのアクセスを提供します。
Emacsの組み込みの取り消しシステムが好きですが、このパッケージは非常に直感的です。
ファイル自体からのコメントは次のとおりです。
Emacsには強力なアンドゥシステムがあります。ほとんどのソフトウェアの標準の元に戻す/やり直しシステムとは異なり、バッファの過去の状態を復元することができますanyやり直すとすぐに過去の状態)。しかし、このパワーには代償が伴います。多くの人がEmacsのアンドゥシステムを混乱させて使いづらく、多くのパッケージを作成してそれをより強力ではないがより直感的なアンドゥ/リドゥシステムに置き換えます。
標準の元に戻す/やり直しによるデータの損失、およびEmacsの元に戻すの混乱は、元に戻す履歴を変更の線形シーケンスとして処理しようとすることに起因します。そうではありません。このパッケージによって提供される「アンドゥツリーモード」は、Emacsのアンドゥシステムをアンドゥ履歴をそのままのシステム、つまり変更の分岐ツリーとして扱うシステムに置き換えます。このシンプルなアイデアにより、標準の元に戻す/やり直しシステムのより直感的な動作を、履歴を失うことのないパワーと組み合わせることができます。追加のボーナスとして、元に戻す履歴をより効率的に保存できるため、Emacsが履歴の破棄を開始する前により多くの変更を蓄積できます。
redoの ndo-tree 癖に注意してください!
多くの人気のある「スターターキット」(prelude、purcell、spacemacs)には、元に戻すツリーがバンドルされています。ほとんど(すべて?)前述のように、元に戻すツリーは、元に戻す/やり直しツリーを視覚化してトラバースする便利な方法です。 Preludeは、キーコード(uu
)とC-x u
も提供します。
問題は:undo-treeがredoのEmacsのデフォルトの既知のバインディングを破壊しているようだ:C-g C-/
。
代わりに、これらの対称キーを元に戻す/やり直しに使用できます:
C-/ undo
C-S-/ redo
ビジュアライザーを開かずに、すぐにredoしたい場合があるため、これらは便利です。
私は redo.el
極めて便利 を見つけます。これは「通常の」元に戻す/やり直しを行うためです。
(when (require 'redo nil 'noerror)
(global-set-key (kbd "C-S-z") 'redo))
(global-set-key (kbd "C-z") 'undo)
ファイルをダウンロードし、LISPパスに入れて、上記を.emacs
に貼り付けてください。
最後の操作を元に戻す場合は、次の手順を実行します。
ESC
C + /
)