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 вы можете легко перемещаться по дереву отмены.
- Так что просто вернитесь к первоначальному разделу (вокруг
if yes
), пометьте егоma
, - Вернитесь к своему предыдущему состоянию в дереве (даже если оно отменяет другие изменения).
- Скопируйте (скопируйте) область, которую вы хотите сохранить в регистр (например, выберите визуальные линии -
V5j"by
). - Вернитесь к фактическому состоянию (последний элемент на дереве Gundo).
- Перейти в раздел, который вы хотите изменить (
'a
) - Удалил раздел, который вы хотите восстановить, и замените его содержимым
b
регистр.
Ответ @Zsolt, вероятно, очень интересный, я должен был бы познакомиться с этим.
Я обычно делаю что-то вроде
100g- (вернитесь к снимку истории, который содержал то, что вы хотите восстановить)
восстановите ваш 'спасательный' текст, используя какой-либо метод, например
:12,17yank
999 г + (возврат к вершине истории)
используйте регулярные действия редактирования, чтобы восстановить выдернутые линии на место.