vi/vim에서 아래로 내려가는 텍스트 행을 어떻게 덮어쓰나요?

vi/vim에서 아래로 내려가는 텍스트 행을 어떻게 덮어쓰나요?

vi/vim에서 페이지 아래로 내려가는 텍스트 행을 덮어쓰고 싶습니다. 한 줄의 문자를 덮어쓰는 것과 유사합니다. 를 누른 R다음 붙여넣으면 문자를 덮어쓰지만 대신 페이지 아래로 동일한 작업을 수행하고 싶습니다.

예:

다음 텍스트가 포함된 파일이 있습니다.

 var1: 7FBzezsLKyzYmVeM
 var2: kL8RIBJVNrlEUyYV
 var3: 1FkmXFSXtH4msKnL

해당 줄을 다음으로 바꾸고 싶습니다.

 var1: 7PmuHKKRx9OYt9mR
 var2: nuRAS5dAKfUrvECJ
 var3: km11I7HuXOWuu43X

일반적으로 내가 하는 일은 기존 줄을 삭제하고 그 자리에 새 줄을 붙여넣거나 그 반대로 하는 것입니다.

새 텍스트는 다른 곳에서 끌어오거나 복사하더라도 붙여넣기 버퍼에서 나옵니다.

광범위하게 검색했지만 이 작업을 수행하는 방법에 대한 참조를 찾을 수 없습니다. 매크로를 사용해도 이 작업을 어떻게 수행할지 생각할 수 없습니다.

누구든지 이것을 할 수 있었습니까? 이것이 가능하지 않다면 괜찮습니다. 확실히 압니다.

답변1

이것을 시도해 보십시오:

  • 복사하려는 줄을 복사하거나 잡아당깁니다.
  • 변경하려는 버퍼로 전환
  • gRCtrl-r0Esc

번역:

  • gR시각적 교체 모드로 들어갑니다( 참조 :h gR).
  • Ctrl-r0- 레지스터에서 붙여넣기 ( , 0참조 ):h i_CTRL-R:h quote0
  • Esc- 교체 모드를 종료합니다.

답변2

당신이 무슨 뜻인지 확실하지.

첫 번째 일치하는 줄로 이동한 다음 사용

.,.+2d
r /tmp/var
  • .,.+2d3줄을 삭제합니다(필요에 따라 2줄 조정).
  • r /tmp/var템플릿 파일을 읽습니다(삽입).

답변3

내장형 gR(@SatoKatsura가 제안한 대로)은 오래된 것과 새로운 것의 길이가 동일하다면 훌륭합니다. 그러나 일반적인 경우에는 이것이 작동하지 않으므로 다른 접근 방식을 취해야 합니다. 나는 이것이 너무 자주 필요하기 때문에 단순화하고 최대 속도를 허용하는 플러그인을 작성했습니다.바꾸기로등록.

gr이 플러그인은 {모션}/텍스트 개체, 전체 줄 또는 현재 선택 항목에 포함된 텍스트를 레지스터의 내용으로 바꾸는 투인원 명령을 제공합니다 . 오래된 텍스트는 블랙홀 레지스터에서 삭제됩니다. 즉, 사라졌습니다. 다양한 특수 사례를 투명하게 처리하고 표준 .명령을 통해 빠른 반복을 허용합니다. 마음에 들지 않으면 해당 페이지에 대안에 대한 링크가 있습니다.

관련 정보