[О блоге] [наверх] [пред] [2018-01-26 23:45:09+03:00] [4608c9351ec44467f430235fe2a83d92fedb98f3]
Темы: [tip][vim]

Впервые использовал :undotree для реального дела!

В Vim практически весь присутствующий функционал нужен. Что-то выпилить:
лично мне станет хуже. Вот реально всё использую. Кроме:

* всякого legacy типа поддержки старых версий
* всяких language-specific штук, особенно для языка C
* всяких ивритских, арабских и персидских особенностей
* скриптования на языках типа TCL или Lua
* табов
* GUI -- ну тут по понятным причинам

Табы мне известно что многие используют. Но, у меня надобности в них
никогда даже близко не возникало потому-что табы есть в tmux-е. Я удобно
переключаюсь. Да, копирую данные между разными instance-ами Vim-а не
через регистры, а через буфер-обмена. Но это достаточно редкая операция
и всё-равно быстро выполняемая.

И вот до сих пор в этом списке был undo tree. Изначально я вообще не
понимал где он может помочь -- я даже синтетического use-case не мог
придумать, который бы всё-равно не покрыт бы был git-ом и в более
удобном варианте. Когда я смотрел презентацию Муленаара на юбилей Vim,
то он упомянул что undo tree был добавлен, в первую очередь, из-за того
что это было сделать просто. Особо это кода и сил не отняло. Ну, тогда,
действительно, почему бы и нет, если кому-то может пригодится. Муленаар
упоминал что это такая встроенная мини система контроля версий.

Так вот сегодня писал письмо (в Vim). В режиме вставки набрал одним
залпом где-то шесть строк текста. Потом, желая что-то подредактировать
после, нечаянно нажал "u" (undo) и сразу же перешёл в режим ввода ("i"),
что-то введя. Нажатие Esc приводит к выходу из режима ввода. И теперь я
не могу ни "u" нажимать, ни Ctrl-R (redo) чтобы восстановить нечаянно
отменённую вставку полдюжины строк. Они потеряны, подумал я! Очень
обидно заново было бы их вводить.

Голос в голове произнёс "вспомни про undo tree!". Ни разу на практике не
использовав, с ходу вбил :undotree. Он показал список из двух пунктов:
какой-то набор изменений сделан 5сек назад, а какой-то 60сек назад. Ввёл
:undo 2 (id под которым было более старое изменение) и появился мой
потерянный текст! Радости нет предела и :undotree сразу же себя окупила
своей полезностью. Если это реально мало кода, то оно очень того стоит,
если даже хотя бы вот раз в N лет вот так вот поможет спасти работу
из-за неаккуратности. Он сделал прям *идеально* именно то, что мне надо
было: показал параллельную ветвь правок файла и дал её восстановить.

    [оставить комментарий]