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