Отменить все изменения с момента открытия буфера в vim - PullRequest
42 голосов
/ 19 декабря 2011

Как я могу отменить все изменения с момента открытия буфера? Я предполагаю, что может быть какая-то форма :earlier, которая делает это.

ОБНОВЛЕНИЕ : Многие предлагают решения для перехода к более ранней записи файла. Это не то, что я просил. Я хочу вернуть исходное состояние, в котором находился файл, когда я первоначально загружал его в буфер, независимо от того, сколько записей было сделано с тех пор.

Ответы [ 7 ]

74 голосов
/ 20 декабря 2011

Чтобы вернуть текущий буфер в состояние до самого первого изменения, запомненного Vim в списке отмены (см. :help undo-tree), используйте команду

:u1|u
49 голосов
/ 19 декабря 2011

Вы можете использовать

:edit!

команда для перехода в самое раннее сохраненное состояние. См. :help edit! для получения дополнительной информации.

Вы также можете отметить что-то вроде gundo.vim ( можно найти здесь ), которое графически отображает все дерево отмены, и вы можете легко переходить между точками. Тогда есть histwin plugin, который я еще не использовал, но предлагает аналогичную функциональность.

6 голосов
/ 20 декабря 2011

Из документации

: u [ndo] {N} Перейти к номеру изменения {N}. Смотреть | отменить ветки | для значения {N}. {не в Vi}

Если вы введете :u 1 Похоже, что после первого изменения; нажатие u или ввод :u вернутся к изменению.

В противном случае вы можете использовать очень большое количество до :earlier или g- например :earlier 100000000 или 100000000g-

Если вы поместите это в отображение / команду, она может выполнить любое из них без особых проблем. например,

:nnoremap <C-F12> :earlier 100000000<CR>

3 голосов
/ 27 июня 2017

В vim 8.1+, а также в neovim , вы можете просто использовать :u0

3 голосов
/ 19 декабря 2011

Чтобы получить доступ к ранее сохраненному состоянию файла, я думаю, что следующая работа:

:earlier 1f

Из документации:

 :earlier {N}f      Go to older text state {N} file writes before.
                When changes were made since the last write
                ":earlier 1f" will revert the text to the state when
                it was written.  Otherwise it will go to the write
                before that.
                When at the state of the first file write, or when
                the file was not written, ":earlier 1f" will go to
                before the first change.
0 голосов
/ 20 декабря 2011

Графическое решение:

Плагин Gundo позволяет визуально сравнивать изменения в истории отмен.

Откройте «Панель истории отмены» Gundo, наберите G, перейдите к последней строке, затем мыможно вернуться к исходному файлу.

0 голосов
/ 20 декабря 2011
:earlier {N}m Go to older text state about {N} minutes before.

Это должно помочь ... И даже у вас есть {N} ч, что примерно за {N} часов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...