이 답변 은 말합니다 :
Vim의 실행 취소 / 재실행 시스템은 무적입니다. 무언가를 입력하고, 취소하고, 다른 것을 입력하면, Vim은 스택 대신 실행 취소 트리를 사용하기 때문에 가장 먼저 입력 한 것을 되돌릴 수 있습니다. 거의 모든 다른 프로그램에서 가장 먼저 입력 한 내용이이 상황에서 손실됩니다.
이것이 내가 처음 듣는 것입니다. 나무를 따라 어떻게 역 추적 할 수 있습니까?
답변
:h undo-redo
모든 명령과 사용법을 나열하는 도 참조하십시오 .
실행 취소 트리를 탐색하는 방법에는 두 가지가 있습니다. 하나는 “시간을 거슬러 올라가는 것”입니다. g+
그리고 g-
트리의 모든 노드를 시간순 또는 역 시간순으로 순회합니다 (실행 취소 분기 사이에서 임의로 g-
건너 뛸 수 있기 때문에 약간 혼란 스러울 수 있지만 충분히 길면 항상 필요한 곳으로 갈 수 있습니다) 결국). :earlier
그리고 :later
같은 시간 기술자 걸릴 7m
또는 1h
; 다시 이것은 취소 분기 사이에서 임의로 이동할 수 있습니다.
다른 방법은 :undo n
where n
is a action of a action을 사용하여 트리의 특정 노드로 이동하는 것입니다 . (텍스트 추가, 삭제, 교체 등 모든 작업은 순차적으로 번호가 매겨집니다.)를 통해 실행 취소 트리의 잎에서 작업 수를 조회 할 수 있습니다 :undolist
. 이렇게하면 가지 사이를 쉽게 이동할 수 있습니다. 그런 다음 사용할 수 있습니다 u
및 Ctrl-R
이동 및 해당 분기 아래에.
Vim 도움말에 좋은 예가 있습니다. 이것이 어떻게 작동하는지 알아내는 가장 좋은 방법은 약간 가지고 노는 것입니다.
답변
파티에 조금 늦었지만 Vim 용 실행 취소 트리 시각화 플러그인을 작성했다고 언급했습니다 .http : //bitbucket.org/sjl/gundo.vim/
개인적으로 나는 이런 식으로 나무를 그리는 것이 내가 이해할 수있는 유일한 방법이라는 것을 알았습니다.
답변
답변
vim을 사용하는 경우 다음을 사용하여 실행 취소 트리를 탐색 할 수 있습니다.
u
: (실행 취소) 실행 취소 트리에서 뒤로 이동Ctrl+R
: (다시 실행) 실행 취소 트리에서 앞으로 이동
문서를 제 시간에 가져 오거나 앞으로 가져 오는 다른 방법 :
:earlier 15m
: 15 분 뒤로 이동:later 15m
: 15 분 안에 앞쪽으로 이동
답변
이 질문에 대한 답변을 받았지만 예를 추가 할 것이라고 생각했습니다.
새 파일을 작성하고 다음을 입력하십시오.
this is a line
undol
실행 취소 트리가 표시됩니다. 이 시점에서 당신은 아무것도 취소하지 않았습니다
:undol
number changes when saved
1 1 14:50:36
이제 ESC를 누르고 행을 다음과 같이 수정하십시오.
this is a old line
일반 모드로 전환하고 u (실행 취소)를 누르면 “이전”이 제거됩니다. 를 체크 undol
하면이 시점에서 여전히 하나의 브랜치가 있습니다.
이제 줄을 수정하여 다음과 같이 말합니다.
this is a new line
이제 :undol
보여줍니다 :
number changes when saved
2 2 87 seconds ago
3 2 3 seconds ago
다음을 입력하여 첫 번째 지점으로 전환 할 수 있습니다
:u 2
이 번호와 연결된 지점의 끝을 이동합니다 2. 당신이이 분기를 따라 이동할 수 g+
및 g-
. 이 시점 g+
에서 아무것도하지 않을 것입니다 (당신은 잎에 있습니다). g-
“이전” 을 누르면 제거됩니다 (첫 번째 실행 취소 트리를 통과하고 있음). “이전”을 제거 g-
하고 g+
다시 누르면 다시 “이전”이 다시 실행됩니다.
입력하면
:u 3
두 번째 실행 취소 분기의 리프로 이동하면 다음과 같이 표시됩니다.
this is a new line
답변
이 중 많은 부분이 여기에 요약되어 있습니다.
답변
gundo.vim을 사용하는 것 외에도 언급 g+
하고 싶습니다.g-