vim에서 실행 취소 기록을 어떻게 버릴 수 있습니까? 때입니다.) 이를 수행하는 한 가지 방법은

Vim에는 Undo가 있습니다. 그러나 때로는 알려진 좋은 시점에서 실행 취소 기록을 지우고 싶습니다. u개별 변경 사항을 취소하는 데 사용할 수는 있지만 특정 시점으로 만 되돌릴 수 있습니다. (예를 들어, 이것은 내가 마지막으로 커밋했을 때입니다.)

이를 수행하는 한 가지 방법은 파일을 닫았다가 다시 여는 것입니다. 실행 취소 기록은 그 시점에서 깨끗하게 시작됩니다. 그러나 그것은 번거 롭다.

과거에는으로이 작업을 수행했습니다 :edit!. 그러나 Vim 7.3에서는 실행 취소 기록을 버리지 않습니다.

파일을 닫는 것 외에 다른 방법이 있습니까?



답변

:set undoreload=0 | edit

당신이 원하는 것을해야합니다.


답변

오래된 : 편집하다! 한 줄짜리 행동 :

:exe "set ul=-1 | e! | set ul=" . &ul


답변

Benoit의 기능이 저에게는 효과가 없었지만 vim 매뉴얼에서 비슷한 것을 발견했습니다.

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

나는 그것을 vimrc에 추가 한 함수로 가져 갔고 vim 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.


답변

아마:

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

(의 'ul'별칭입니다 'undolevels').


답변

“실행 취소 기록 지우기 (: w : 실행 취소 파일이 있으면 삭제)
command! -bar UndoClear exe "set ul=-1 | m-1 | let &ul=" . &ul

  • ‘취소 수준’을 -1로 설정하면 실행 취소 정보가 즉시 지워지지 않습니다. 이는 다음 변경에서 발생합니다. 즉 m-1, 실제로 텍스트가 변경되지 않습니다.
  • 경우 'undofile'에이다, :w같은 실행 취소 파일 또는 체인을 취소합니다 UndoClear|w.

답변

스크립트에서 :

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전화를 사용 하십시오.


답변