nvi 및 / 또는 원래 vi에서 여러 번 실행 취소 할 수 있습니까?

때로는 Vim이없는 시스템을 사용하고 기본 nvi (BSD 시스템) 또는 원본 vi (Arch Linux).

상당히 몇 가지 차이점이 있지만 가장 큰 문제는 실행 취소 할 수 있다는 것입니다. 마지막 작업입니다. 두 번째 작업에서 u 를 누르면 “다시 실행”됩니다.

이 작업을 수행 할 수있는 방법이 있나요?

답변

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 년부터 nvi 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} 

답변

원래

는 여러 번 실행 취소해야합니다 (한 줄 내에서 여러 변경 사항을 되돌릴 수있는 U 제외)는 번호가 매겨진 레지스터로, 가장 최근의 변경 사항 9 개를 보유합니다. 또는 삭제.

번호가있는 레지스터에서 입력하는 경우 후속 도트 명령은 명령을 반복 할 때 해당 레지스터를 증가시킵니다.

예 : 다음 텍스트, >로 표시된 커서 라인,

 aaaa > bbbb cccc dddd eeee 

명령 dd.. 결과 :

 aaaa > eeee 

"1P를 입력하면 vi가 레지스터 "1에서 가장 최근 삭제 :

 aaaa > dddd eeee 

히팅 ."2P를 수행하여 다음 가장 최근 레지스터의 내용을 넣고 .를 다시 누르면 레지스터

.

즉, "P..는 삭제 한 모든 텍스트를 되돌리고

 aaaa > bbbb cccc dddd eeee 

훌륭하지는 않지만 아무것도없는 것보다 낫습니다! 더 유용하게 버퍼의 시작 또는 끝에서 사용하여 번호가 매겨진 레지스터에있는 항목을 빠르게 검사 할 수 있습니다. 그런 다음 필요하지 않은 항목을 쉽게 삭제할 수 있습니다.

Vim에 문서화되어 있습니다. :help redo-register에서.

답변

원래 vi를 사용하여 [n]을 누르십시오. u는 n 단계 뒤로 이동합니다. 점진적으로 단계적으로 뒤로 이동하려면 ...

  • [n] u를 눌러 n 단계 뒤로 이동
  • 그런 다음 [n] u를 누릅니다. n 개 단계를 다시 실행하려면
  • [n + 1] u를 눌러 [n + 1] 개 단계로 되돌아갑니다.
  • 기타

댓글

  • 원래 vi에 가까운 무언가 가 있지만 ' n 단계로 돌아 가지 않는 것 같습니다.
  • 동의합니다. 원래 Vi는 u를 사용하여 단일 변경 사항 만 되돌 리거나 한 줄을 원래대로 복원 할 수 있습니다 U로 편집을 시작하기 전입니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다