Слишком часто я делаю ошибку, печатая с неправильным фокусом окна (и делал это несколько раз с помощью USB-аутентификатора). В программах с большим количеством горячих клавиш (Gmail, VLC, Vim) это часто приводит к непреднамеренным последствиям нежелательных изменений.
Иногда я могу проследить свои шаги и вспомнить, что я набрал, чтобы исправить любые изменения или отменить любые настройки, которые я настроил, если поймаю себя рано. К сожалению, это не всегда так.
В Vim у меня может быть что-то столь же безобидное и очевидное, как изменение строки текста, которую легко отменить. Или я мог бы по незнанию изменить что-то, что не так легко идентифицировать. Если я случайно ввожу последовательность нежелательных команд в Vim, как я могу проверить и отменить любые изменения или изменения настроек?
:e!
сделал бы это:e!
было бы плохо, если вы не сохранили с последнего правильного состояния, иu
может быть недостаточно, если вы набрали кучу вещей. (Если вы наберетеdate month
, например, то вы удалили бы тег, установили метку и выполнили бы поиск, что было бы оченьu
u
быть частью последовательности, выполняя некоторые отмены в середине.Ответы:
Invoke
чтобы увидеть, когда вы сделали последний набор изменений. Если в нем говорится, что было сделано несколько изменений, например, «3 секунды назад», и вы знаете, что изменили его только намеренно , скажем, минуту назад, то выполните
вернуться в желаемое состояние. В противном случае, если нет недавних изменений, вам не нужно ничего делать.
Далее ссылка:
:help undo-tree
.источник
Чтобы перефразировать вопрос, вы ищете способ просмотреть или иным образом получить уведомление об изменениях, внесенных в файл, а затем использовать функцию отмены. Там может быть другой способ или даже плагины, которые поддерживают это. Но я объясню, что я использовал для той же цели.
Вы комбинируете существующую функцию vim, чтобы сделать это. Например, вы можете определить функцию, такую как:
Вы можете позвонить позже и даже назначить комбинацию клавиш.
Это откроет окно сравнения с разделенным окном, которое покажет вам изменения, сделанные с момента последнего сохранения. После того, как вы определили сделанные изменения, вы можете выйти из этого представления и использовать другие функции vim, такие как отмена и отмена дерева и т. Д., Или даже плагины для возврата к предыдущим состояниям.
Я понимаю, что это не идеально, потому что для этого нужно иметь определенный рабочий процесс. Но это работает довольно хорошо. И с другой стороны, мы не меняем принцип работы vim и не полагаемся ни на что вне.
Я надеюсь, что вы найдете это полезным. Некоторое время назад я адаптировал это решение из фрагментов, найденных в Интернете, включая vim Wikia. Так вот, где любой кредит должен.
источник
Мне кажется, простой ответ на этот вопрос - нажимать
u
до тех пор, пока вы не отмените изменение, которое вы хотели сохранить, затем нажмитеCtrl-R
.источник
Как и @superjer, я продолжаю нажимать, uпока красный
[+]
маркер в моей строке состояния не исчезнет.источник
:e!
это также хорошее решение; В эти дни Vim даже сохранит ваши «отмененные» изменения в истории отмен.:earlier 1f
. В1f
означает «1 предыдущее сохраненное состояние», поэтому он будет идти обратно в предыдущий раз вы сохранили файл. Если буфер изменен, то это отменяет все модификации. Если буфер не был изменен (т. Е. Он в данный момент находится в сохраненном состоянии), он перейдет к предыдущему разу, когда вы сохранили файл.