VIM :: Отменить изменения в указанном тексте или вокруг него - PullRequest
4 голосов
/ 07 апреля 2011

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

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

Ответы [ 2 ]

10 голосов
/ 08 апреля 2011

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

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

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

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

:12,17yank

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

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

4 голосов
/ 07 апреля 2011

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

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