Короткая версия: отменив отмену. Если вы отмените и затем выполните команду без редактирования, такую как C-f , то следующая отмена отменит отмену, что приведет к повторению.
Более длинная версия:
Вы можете думать об отмене как о работе со стеком операций. Если вы выполняете какую-либо команду (даже команду навигации, такую как C-f ) после последовательности операций отмены, все отмены помещаются в стек операций. Поэтому следующая отмена отменяет последнюю команду. Предположим, у вас есть последовательность операций, которая выглядит следующим образом:
- Вставить "foo"
- Вставить "бар"
- Вставить "Я люблю спам"
Теперь вы отменяете. Это отменяет последнее действие, приводя к следующему списку:
- Вставить "foo"
- Вставить "бар"
Если в этот момент вы делаете что-то, кроме отмены - скажем, C-f , стек операций выглядит следующим образом:
- Вставить "foo"
- Вставить "бар"
- Вставить "Я люблю спам"
- Отменить вставку "Я люблю спам"
Теперь, когда вы отменяете, первое, что отменено - это отмена. Получив исходную стопку (и состояние документа):
- Вставить "foo"
- Вставить "бар"
- Вставить "Я люблю спам"
Если вы выполняете команду изменения, чтобы разорвать последовательность отмен, эта команда добавляется после отмены и, таким образом, является первым, что впоследствии будет отменено. Предположим, вы отступили над «баром», а не нажали C-f . Тогда вы бы имели
- Вставить "foo"
- Вставить "бар"
- Вставить "Я люблю спам"
- Отменить вставку "Я люблю спам"
- Удалить "бар"
Это добавление / повторное добавление происходит до бесконечности. Требуется немного привыкнуть, но это действительно дает Emacs очень гибкий и мощный механизм отмены / повторения.