2017-11-28 8 views
1

this question과 비슷하게 vim에서 실행 취소 된 모든 변경 사항을 다시 실행하라는 명령이 있습니까? 현재 내가 알고있는 모든 것은 1000<C-R> 또는 그와 비슷한 것으로 많은 변경 사항을 다시 실행하기가 쉽지만 성 가시고 오히려 임의적입니다.모든 실행 취소 변경 다시 실행

답변

5

이 모든 최신 변화까지 변경 재실행 :exec 'undo' undotree()['seq_last']

을보십시오.

당신은 Ctrl 키 + 변화 + R처럼 뭔가에 매핑하십시오. 당신의 vimrc 파일에 장소이 :

undo {N} 실행 취소 트리에서 n 번째 변화에 점프

nnoremap <C-S-R> :exec 'undo' undotree()['seq_last']<CR>

설명.

undotree()은 실행 취소 트리의 상태로 사전을 반환하는 함수입니다.

undotree()['seq_last']은 사전에서 seq_last 키를 찾습니다. The highest undo sequence number used.

:exec 우리의 표현의 문자열을 평가 : :help undotree에서

우리는 seq_last와 관련된 값입니다 참조하십시오. 예를 들어, undotree()['seq_last']42을 반환한다고 가정 해 봅시다. 이 예제의 표현식은 undo 42 일 것이므로 42 번째 변경 사항이 적용됩니다.

+1

전혀 작동하지 않아 오류 메시지가 나타나지 않아 당황 스러웠지만, 실수로 'vi'에서 작업하고 있다는 것을 알았습니다. 그것은'vim'에서 완벽하게 작동합니다. –

3

빔은 직선 실행 취소 시퀀스가 ​​아닌 실행 취소 분기를가집니다. 이것은 명심하는 것이 중요합니다. 최신 텍스트 상태로 가려면 9999g+ (9999은 임의의 높은 숫자 임)을 사용할 수 있습니다. 또는 :later 1d을 사용할 수 있습니다.

+0

(어느 정도까지) 실행 취소 브랜치를 이해합니다. 그러나이 경우 원하는 것은 현재 브랜치 ('9999u'의 결과)에서 최신 상태에 도달하는 방법입니다. 임의의 번호를 선택하십시오. –