From: Sergey Matveev Date: Fri, 26 Jan 2018 20:45:09 +0000 (+0300) Subject: Впервые использовал :undotree для реального дела! X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=4608c9351ec44467f430235fe2a83d92fedb98f3;p=stargrave-blog.git Впервые использовал :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 лет вот так вот поможет спасти работу из-за неаккуратности. Он сделал прям *идеально* именно то, что мне надо было: показал параллельную ветвь правок файла и дал её восстановить. ---