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


13

때로는 Vim이없는 시스템에 있고 기본값 nvi(BSD 시스템) 또는 원본 vi(Arch Linux)을 사용합니다.

몇 가지 차이점이 있지만 가장 큰 문제는 마지막 작업 취소 할 수 있다는 것 입니다. u두 번째 작품을 누르면 "재실행"입니다.

이 작업을 수행 할 수있는 방법이 있습니까?

답변:


16

보낸 사람 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}

1

원본 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있습니다.


-1

원래의 vi를 사용하여 [n] u를 눌 러 n 단계 뒤로 이동합니다. 단계적으로 점차 돌아가려면 ...

  • n 단계 뒤로 가려면 [n] u를 누르십시오
  • 그런 다음 [n] u를 눌러 n 단계를 다시 실행하십시오.
  • 그런 다음 [n + 1] u를 눌러 [n + 1] 단계 뒤로 이동
  • 기타

1
내가 가진 원래의 VI 뭔가 가까이 , 그리고 다시 N 단계 이동하지 않는 것 같습니다.
muru

동의했다. Original Vi는을 사용하여 단일 변경 사항 만 되돌 리거나을 사용하여 u편집을 시작하기 전의 상태로 한 줄을 복원 할 수 있습니다 U.
Antony
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.