VIM:: Отменить изменения в указанном тексте или вокруг него

В VIM возможно ли отменить изменения в определенном блоке текста или вокруг него? Допустим, я делаю изменения А прямо над "if yes", затем внесите изменения B, C, D и E в других местах файла. Можно ли сказать vim "отменить изменения, которые были сделаны в +/- 10 строк из if yes?

Я столкнулся с другим вопросом, который предполагает, что это невозможно, или, по крайней мере, в vanilla vim. Кто-нибудь знает какие-либо плагины, которые позволили бы такое поведение?

2 ответа

Решение

С помощью этого плагина: http://www.vim.org/scripts/script.php?script_id=3304 вы можете легко перемещаться по дереву отмены.

  1. Так что просто вернитесь к первоначальному разделу (вокруг if yes), пометьте его ma,
  2. Вернитесь к своему предыдущему состоянию в дереве (даже если оно отменяет другие изменения).
  3. Скопируйте (скопируйте) область, которую вы хотите сохранить в регистр (например, выберите визуальные линии - V5j"by).
  4. Вернитесь к фактическому состоянию (последний элемент на дереве Gundo).
  5. Перейти в раздел, который вы хотите изменить ('a)
  6. Удалил раздел, который вы хотите восстановить, и замените его содержимым b регистр.

Ответ @Zsolt, вероятно, очень интересный, я должен был бы познакомиться с этим.

Я обычно делаю что-то вроде

100g- (вернитесь к снимку истории, который содержал то, что вы хотите восстановить)

восстановите ваш 'спасательный' текст, используя какой-либо метод, например

:12,17yank

999 г + (возврат к вершине истории)

используйте регулярные действия редактирования, чтобы восстановить выдернутые линии на место.

Другие вопросы по тегам