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
.,.+2d
행 3이 제거됩니다(필요에 따라 행 2 조정).r /tmp/var
템플릿 파일을 읽습니다(삽입).
답변3
gR
이전 길이와 새 길이가 동일하면 내장(@SatoKatsura가 제안한 대로)이 좋습니다. 그러나 일반적인 경우에는 이것이 작동하지 않으며 다른 접근 방식을 취해야 합니다. 이 기능이 너무 자주 필요해서 이를 단순화하고 최대 속도를 허용하는 플러그인을 작성했습니다.레지스터로 교체.
플러그인은 gr
{모션}/텍스트 개체, 전체 줄 또는 현재 선택 항목에 포함된 텍스트를 레지스터의 내용으로 대체하는 2-in-1 명령을 제공합니다. 이전 텍스트는 블랙홀 레지스터에서 삭제됩니다. 즉, 사라진다. 많은 엣지 케이스를 투명하게 처리하고 .
표준 명령을 통해 빠른 반복을 허용합니다. 마음에 들지 않으면 해당 페이지에 대안에 대한 링크가 있습니다.