1. ホーム
  2. エマックス

[解決済み】Emacsで「元に戻す」後に「やり直す」のはどうやるの?

2022-04-01 16:18:54

質問

この記事 によると、Emacsにredoがあるのは、undo中に方向を逆にすることができ、それによってundoを元に戻すことができるからだそうです" 。

これはどういう意味ですか?ユーザーはEmacsでどのように「やり直し」できるのですか?

解決方法は?

短いバージョン:アンドゥを取り消すことによって。元に戻した後、編集以外のコマンド、たとえば C-f を実行すると、次のアンドゥでアンドゥが取り消され、結果的にリドゥになります。

長いバージョンです。

アンドゥは、操作の積み重ねに対して操作すると考えることができます。もしあなたが何らかのコマンドを実行したら(たとえば C-f ) の後に、一連のアンドゥ操作を行うと、すべてのアンドゥが操作スタックにプッシュされます。 つまり、次のアンドゥは最後のコマンドをアンドゥすることになります。 例えば、次のような操作手順があったとします。

  1. foo"を挿入します。
  2. 挿入する "bar"
  3. スパムが大好きです。

では、アンドゥです。 最後のアクションを取り消し、以下のようなリストになります。

  1. foo"を挿入します。
  2. 挿入する "bar"

この時点でアンドゥ以外の操作をした場合 - とします。 C-f 操作スタックは次のようになります。

  1. foo"を挿入します。
  2. 挿入する "bar"
  3. スパムが大好きです。
  4. 挿入した "I love spam" を元に戻す。

さて、アンドゥをすると、まずアンドゥが解除されます。 その結果、元のスタック(とドキュメントの状態)になります。

  1. foo"を挿入します。
  2. 挿入する "bar"
  3. スパムが大好きです。

アンドゥのシーケンスを破るためにモディファイコマンドを行うと、そのコマンドはアンドゥの後に追加されるため、その後最初にアンドゥされることになります。 を打つ代わりに "bar" の上でバックスペースをしたとします。 C-f . そうすれば、次のようになります。

  1. foo"を挿入します。
  2. 挿入する "bar"
  3. スパムが大好きです。
  4. 挿入した "I love spam" を元に戻す。
  5. バー(")を削除する。

この追加・再追加は無限に起こります。 慣れるまで少し時間がかかりますが、Emacsに非常に柔軟で強力なアンドゥ/リドゥ機構を与えています。