답변:
보낸 사람 nvi(1)
:
u Undo the last change made to the file. If repeated, the u command
alternates between these two states. The . command, when used
immediately after u, causes the change log to be rolled forward or
backward, depending on the action of the u command.
따라서를 누른 u다음 .더 누르면 취소됩니다. 를 누르면 u다시, 그것은 방향을 '반대'하고 누르면 .리두 될 것입니다.
나는 어제까지 이것에 대해 전혀 알지 못했습니다. 그것이 어떻게 든 새로운 기능이라고 생각했지만 1996 년부터 적어도 1.79 이후이 방식으로 작동 한 것 같습니다 .
이것은 하지 않는 작업 중 원래 VI ; 실행 취소는 다음과 같이 문서화됩니다.
u Undoes the last change made to the current buffer. If repeated,
will alternate between these two states, thus is its own
inverse. When used after an insert which inserted text on more
than one line, the lines are saved in the numeric named buffers
(3.5).
u다시 누르면 변경 사항이 다시 적용 된다는 복잡한 방법입니다 .
Vim이 :help undo
말한 것 (그리고 그것이 또한 작동하지 않는다고 가정 한 이유 nvi
) :
u Undo [count] changes. {Vi: only one level}
원본 vi
이 여러 번 실행 취소해야하는 가장 가까운 것은 ( U
한 줄 내에서 여러 변경 사항을 되돌릴 수있는 것 외에 ) 가장 최근에 변경된 9 개의 변경 또는 삭제를 보유한 번호가 매겨진 레지스터입니다.
번호가 매겨진 레지스터에서 입력하면 이후의 도트 명령은 명령을 반복 할 때 해당 레지스터를 증가시킵니다.
예를 들어, 다음 텍스트와 함께 커서 라인은로 표시됩니다 >
.
aaaa
> bbbb
cccc
dddd
eeee
명령 dd..
결과는 다음과 같습니다.
aaaa
> eeee
그런 다음을 입력 "1P
하면 vi는 가장 최근에 삭제 된 레지스터를 넣습니다 "1
.
aaaa
> dddd
eeee
친 .
수행하여, 다음 가장 최근의 레지스터의 내용을 넣어 것 "2P
, 타격 .
다시하는 레지스터의 내용을 넣어 것입니다 "3
.
즉, "P..
삭제 한 모든 텍스트를 다시 표시하여
aaaa
> bbbb
cccc
dddd
eeee
훌륭하지는 않지만 아무것도 아닌 것보다 낫습니다! 더 유용하게는 버퍼의 시작 또는 끝에서이를 사용하여 번호가 매겨진 레지스터의 내용을 신속하게 검사 할 수 있습니다. 그런 다음 필요하지 않은 것을 쉽게 삭제할 수 있습니다.
vim 아래에 문서화되어 :help redo-register
있습니다.
원래의 vi를 사용하여 [n] u를 눌 러 n 단계 뒤로 이동합니다. 단계적으로 점차 돌아가려면 ...
u
편집을 시작하기 전의 상태로 한 줄을 복원 할 수 있습니다 U
.