2013-08-29 3 views
10

이렇게 질문을 드리겠습니다. 나는 정력에 새 파일 (버전 1) 다음vim에서 마지막으로 쓰기 작업을 실행 취소하는 방법은 무엇입니까?

#include<stdio.h> 
main() 
{ 
...blah 
} 

하고 파일을 작성하는 <Esc>:w<Enter>를 사용을 엽니 다. 그런 다음 변경 (버전 2)

#include<stdio.h> 
main() 
{ 
...blah 
... edit1 
... edit2 //and large number of changes here and there in code 
} 

는 내가 <Esc>:w<Enter>를 사용하여 변경 사항을 저장합니다.

직접 버전 1에 대한 변경 사항을 취소 할 수있는 방법이 있나요 지속적으로

을 보내고 undo에 대한 u을 누르지 않고, 즉, (그것이 때문에 마지막 저장)
+3

시간을 낭비하지 마시고 건드라 플러그인을 받으십시오. –

+2

[Gundo] (http://sjl.bitbucket.org/gundo.vim/) 또는 버전 관리 소프트웨어를 사용하십시오. – FDinoff

+0

@FDinoff 사실, 저는 svn을 사용합니다. 하지만 문제는 서버에서 업데이트를 가져 와서 (커밋하지 않고 커밋하지 않고 동료 사용자에게 영향을 미침) 로컬 편집을 많이하고 마지막으로 긴 간격을두고 커밋합니다. –

답변

14

: 두 번째 이후 변경 사항이 저장하지 않은 경우

: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. 

그래서, 당신은 할 수 당신과 함께 원하는 : 한편

:earlier 1f 

, 경우 두 번째 저장 후 저장하지 않은 변경 사항은 다음과 같습니다.

:earlier 2f 

이 문제를 해결할 것입니다.

:help :earlier, :help :undolist을 참조하십시오.

+0

이것을 많이 사용하려면 영구 실행 취소 기능을 사용하십시오. (': h persistent-undo') – FDinoff

1

당신은 다시 파일을 처음 열 때까지 모든 방법을 얻을 수 있습니다 꽤 쉽게. u 앞에 숫자를 입력하십시오.

10000u10000 번을 실행 취소합니다. 충분하지 않은 경우 1000000u

비트 단위로 실행 취소하려는 경우 임의의 증가분으로 수행 할 수 있습니다. 5u을 시도하십시오.

디스크에서 파일을 다시로드하려는 경우 :e을 사용하십시오.

빔의 도움에서
+0

감사합니다. 이후, 나는': e'를 사용하여 을 사용하여 버전 2로 되돌릴 수 있습니까? 그 동안 그것을 시도 할 것입니다 .. –

+1

@SathishKrishnan 아니, 나는 그것이 가능하다고 생각하지 않습니다. 어쩌면 하나의 파일을 편집하기 위해 여러 개의 버퍼를 사용하기 시작하면 매우 혼란 스러울 수 있으며 변경 사항을 잃을 수도 있습니다. – Paulpro

+1

영구 실행 취소를 사용하지 않는 경우에만 작동합니다. (제 의견으로는 아주 좋은 기능입니다) – FDinoff

관련 문제