この記事では、「Emacsはやり直しの際に方向を逆にできるため、やり直しを元に戻すことができるため、やり直しができる」と述べています。
これは何を意味するのでしょうか?ユーザーはどのようにしてEmacsで「やり直す」ことができますか?
この記事では、「Emacsはやり直しの際に方向を逆にできるため、やり直しを元に戻すことができるため、やり直しができる」と述べています。
これは何を意味するのでしょうか?ユーザーはどのようにしてEmacsで「やり直す」ことができますか?
回答:
ショートバージョン:元に戻すを元に戻します。取り消してから、などの編集以外のコマンドを実行するとC-f、次の取り消しで取り消しが取り消され、結果としてやり直しになります。
長いバージョン:
元に戻す操作は、操作のスタックを操作していると考えることができます。C-f一連の取り消し操作の後に何らかのコマンド(のようなナビゲーションコマンドを含む)を実行すると、すべての取り消しが操作スタックにプッシュされます。したがって、次の取り消しは最後のコマンドを取り消します。次のような操作シーケンスがあるとします。
今、あなたは元に戻します。最後のアクションが取り消され、次のリストが表示されます。
この時点で元に戻す以外C-fの操作を行うと、操作スタックは次のようになります。
元に戻すと、最初に元に戻すのは元に戻すです。元のスタック(およびドキュメントの状態)になります:
元に戻すシーケンスを解除するために変更コマンドを実行すると、そのコマンドは元に戻すの後に追加されるため、後で元に戻す必要があります。を押すのではなく、「bar」の上でバックスペースしたとしますC-f。その後、あなたは持っていただろう
この追加/再追加は無限に起こります。慣れるには少し時間がかかりますが、Emacsには非常に柔軟で強力な元に戻す/やり直しメカニズムが備わっています。
元に戻すには: C-_
元に戻した後にやり直すには: C-g C-_
複数回入力し C-_ て、元に戻した操作 C-_ をやり直します。emacsコマンドを複数回やり直すには、コマンドを実行してC-xzから、zキーを何度か入力してからコマンドを繰り返します(マクロを複数回実行する場合に興味深い)。
C-u
、たとえばを使用することもできますC-u 8 *
(キャレットがある場所に8 *を挿入します)。したがって、xステップC-u x C-_
を元に戻すために使用できます。
C-x e
)実行した直後はe
、もう一度実行するのに必要なだけ押すことができます。
C-/
およびC-x u
は、と同等の代替undoキーバインディングC-_
です。C-/
打ちやすいので好きです。
C-g C-_
「元に戻した後にやり直す」と回答した場合、その組み合わせに初めてアクセスしたときにのみ適用されます。その後、なしで取り消しキーを繰り返しますC-g
。元に戻した直後に3回やり直すには、と入力しC-g C-_ C-_ C-_
ます。「」と入力C-g C-_ C-g C-_ C-g C-_
すると、円を一周して、やり直しのやり直しを取り消します...
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
一度ヒットしてから押すと、バッファがこれまでにあったすべての状態に到達できます。C-/
十分な回数。
以下のための代替ショートカットundo
以外の、C-/
ある、C-_
、C-x u
、およびM-x
undo
。
Emacsの取り消しシステムの詳細については、Emacsマニュアルの取り消しを参照してください。
より一般的な元に戻す/やり直し機能を使用したい人のために、誰かが書いていundo-tree.el
ます。Emacs以外の取り消しのルックアンドフィールを提供しますが、取り消し履歴の「ツリー」全体へのアクセスを提供します。
私はEmacsの組み込みの取り消しシステムが好きですが、このパッケージは非常に直感的であることがわかりました。
これはファイル自体からのコメントです:
Emacsには強力な取り消しシステムがあります。ほとんどのソフトウェアで標準アンドゥ/リドゥシステムとは異なり、それはあなたが回復することができますいずれかを(標準アンドゥ/リドゥシステムは、あなたがやり直しとすぐに過去の状態を失うことができるのに対し)バッファの過去の状態を。ただし、このパワーには代償が伴います。多くの人々は、Emacsのundoシステムが混乱して使いにくいことに気付き、強力ではないが直感的なundo / redoシステムに置き換える多くのパッケージを生み出します。
標準の元に戻す/やり直しによるデータの損失とEmacsの元に戻すの混乱の両方は、元に戻す履歴を一連の変更として処理しようとすることに起因します。そうではありません。このパッケージが提供する「undo-tree-mode」は、Emacsの「元に戻す」システムを、元に戻す履歴を処理するシステム、つまり変更の分岐ツリーに置き換えます。この単純なアイデアにより、標準の元に戻す/やり直しシステムのより直感的な動作を、履歴を失うことのない力と組み合わせることができます。追加の副次的なボーナスとして、取り消し履歴をより効率的に保存できる場合があり、Emacsが履歴の破棄を開始する前に、より多くの変更を蓄積できます。
用心アンドゥツリーのための癖のREDO!
アンドゥツリーには、多くの人気の「スターターキット」(プレリュード、パーセル、スペースマック)がバンドルされています。ほとんど(すべて?)でも自動で有効にします。前述のように、元に戻すツリーは、元に戻す/やり直しツリーを視覚化してトラバースするための便利な方法です。Preludeはそれにキーコード(uu
)を提供しますC-x u
。
問題は次のとおりです。アンドゥツリーは、Emacsのデフォルトを破壊するようだと、よく知られたバインディングのREDO:C-g C-/
。
代わりに、これらの対称キーを使用して元に戻す/やり直すことができます。
C-/ undo
C-S-/ redo
ビジュアライザーを開かずにすばやくやり直したい場合があるので、これらは便利です。
「通常の」元に戻す/やり直しを行うにはredo.el
非常に便利です。通常、次のように、CSzにバインドしてCzに元に戻します。
(when (require 'redo nil 'noerror)
(global-set-key (kbd "C-S-z") 'redo))
(global-set-key (kbd "C-z") 'undo)
ファイルをダウンロードしてlisp-pathに入れ、上記をに貼り付けます.emacs
。