변경하거나 취소하지 않은 변경 사항을 안전하게 취소하려면 어떻게해야합니까?


12

잘못된 창에 초점을 맞추고 USB 인증기를 사용하여 여러 번 입력 한 경우가 종종 있습니다. 핫키가 많이 활성화 된 프로그램 (Gmail, VLC, Vim)에서는 원치 않는 수정으로 인해 의도하지 않은 결과가 발생하는 경우가 많습니다.

때때로 내 단계를 추적하고 변경 사항을 복구하거나 조기에 파악한 경우 조정 한 설정을 되돌리기 위해 입력 한 내용을 기억할 수 있습니다. 불행히도, 항상 그런 것은 아닙니다.

Vim에서는 쉽게 취소 할 수있는 텍스트 줄을 변경하는 것처럼 해롭고 명백한 것을 가질 수있었습니다. 또는 쉽게 알 수없는 것을 무의식적으로 수정했을 수 있습니다. 실수로 Vim에 원하지 않는 명령 시퀀스를 입력하면 편집 또는 설정 변경을 확인하고 실행 취소 할 수 있습니까?


1
"되돌리기"액션을 찾고 있습니까? :e!그 할 것
재스퍼

1
내 생각 엔 :e!당신이 마지막으로 올바른 상태 때문에 저장하지 않은 경우 나쁜 것, 그리고 u당신이 잔뜩 입력하면 충분하지 않을 수 있습니다. ( date month예 를 들어을 입력 한 경우 태그를 삭제하고 마크를 설정 한 다음 검색을 수행하면 검색을 통해 혼동 될 수 있습니다 u.)
wchargin

1
@WChargin u시퀀스의 일부에 대해 말하지 않고 중간에 실행 취소를 수행합니다.
yo '

답변:


14

불러

:undolist

마지막으로 변경 한 시간을 확인하십시오. 예를 들어 "3 초 전"과 같이 몇 가지 사항이 변경되었다고 말하고 1 분 전에 의도적으로 변경 한 것만 알고 있다면

:earlier 10s

원하는 상태로 되돌립니다. 그렇지 않으면 최근 변경 사항이 없으면 아무 것도 할 필요가 없습니다.


추가 참조 : :help undo-tree .


4

질문을 바꾸려면 파일의 변경 사항을 보거나 다른 방법으로 알림을받은 다음 실행 취소 기능을 사용하는 방법을 찾고 있습니다. 이것을 지원하는 다른 방법이나 플러그인이있을 수 있습니다. 그러나 같은 목적으로 사용한 것을 설명하겠습니다.

기존 vim 기능을 결합하여이 작업을 수행합니다. 예를 들어 다음과 같은 함수를 정의 할 수 있습니다.

" Function: View changes after the last save
function! s:DiffSinceSave()
  let filetype=&ft
  diffthis
  vnew | r # | normal! 1Gdd
  diffthis
  exe "setlocal bt=nofile bh=wipe nobl noswf ro ft=" . filetype
  exe "normal! ]c"
endfunction
com! DiffSaved call s:DiffSinceSave()

그런 다음 나중에 호출하고 바로 가기 키를 매핑 할 수도 있습니다.

" Map key to function: View changes after the last save
nnoremap <leader>? :DiffSaved<CR>

그러면 마지막 저장 이후의 변경 사항이 표시되는 분할 창 기반 diff보기가 열립니다. 변경 사항을 확인한 후 해당보기를 종료하고 실행 취소 및 실행 취소 트리 등과 같은 다른 vim 기능 또는 플러그인을 사용하여 이전 상태로 되돌릴 수 있습니다.

이것이 유용하려면 특정 종류의 워크 플로우가 있어야하기 때문에 이것이 이상적이지 않다는 것을 알고 있습니다. 그러나 이것은 상당히 잘 작동합니다. 그리고 장점은 vim의 작동 방식을 바꾸거나 외부에 의존하지 않는 것입니다.

이 정보가 도움이 되길 바랍니다. vim Wikia를 포함하여 인터넷에서 발견 된 스 니펫 에서이 솔루션을 얼마 전에 적용했습니다. 그것이 바로 크레딧이 필요한 곳입니다.


3

이것에 대한 간단한 대답은 u유지하려는 변경 사항을 취소 할 때까지을 누른 다음을 누르는 것 같습니다 Ctrl-R.


0

@ superjer와 마찬가지로 상태 표시 줄 u의 빨간색 [+]마커가 사라질 때까지 계속 누릅니다 .

set statusline=%f\ %#Error#%m%##

수정되지 않은 마지막 상태로 자동으로 되돌리려면 키를 두는 것이 좋습니다. 그러나 :e!좋은 해결책이기도합니다. 요즘 Vim은 실행 취소 기록에서 "삭제 된"변경 사항을 유지합니다.
joeytwiddle

5
그 명령은 :earlier 1f입니다. 1f는 이전 시간으로 돌아갑니다 있도록 수단 "1 이전에 저장된 상태"는, 당신은 파일을 저장. 버퍼가 수정되면 모든 수정이 취소됩니다. 버퍼가 수정되지 않은 경우 (즉, 현재 저장된 상태) 이전에 파일을 저장 한 시점으로 이동합니다.
jamessan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.