Как я могу отбросить свою историю отмены в энергии?

Отмена хороша иметь в Vim. Но иногда, в известной положительной стороне, я хочу стереть свою историю отмены - чтобы смочь использовать u отменить отдельные изменения, но только назад до определенного момента. (Например, это могло бы быть, когда я в последний раз фиксировал.)

Один способ выполнить это состоял бы в том, чтобы закрыть и вновь открыть файл - история отмены запускается чистый в той точке. Но это - стычка.

В прошлом я выполнил это с :edit!. Но в Vim 7.3, который не отбрасывает историю отмены.

Там другой путь состоит в том, чтобы сделать это кроме закрытия файла?

23
задан 01.02.2011, 19:23

4 ответа

:set undoreload=0 | edit

должен сделать то, что Вы просите.

11
ответ дан 07.12.2019, 09:51

Вероятно:

:let old_ul=&ul
:set ul=-1
:let &ul=old_ul
:unlet old_ul

('ul' псевдоним для 'undolevels').

5
ответ дан 07.12.2019, 09:51

В сценарии:

function! <SID>ForgetUndo
     let old_ul = &ul
     set ul=-1
     let &ul = old_ul
     unlet old_ul
endfunction
command -nargs=0 Reset call <SID>ForgetUndo()

Затем используйте :Reset назвать его.

1
ответ дан 07.12.2019, 09:51

Функция Benoit не работала на меня, но я нашел что-то подобным в руководстве энергии, здесь:

http://www.polarhome.com/vim/manual/v73/undo.html#undo-remarks

Я хлопнул его в функцию, добавленную к моему vimrc, и это, кажется, хорошо работает на энергии 7.3:

" A function to clear the undo history
function! <SID>ForgetUndo()
    let old_undolevels = &undolevels
    set undolevels=-1
    exe "normal a \<BS>\<Esc>"
    let &undolevels = old_undolevels
    unlet old_undolevels
endfunction
command -nargs=0 ClearUndo call <SID>ForgetUndo()

Это может использоваться с :ClearUndo.

6
ответ дан 07.12.2019, 09:51

Теги

Похожие вопросы