[vim] Vim : 줄을 이전에 잡아 당긴 다른 줄로 바꾸기

하루에 한 번 이상 다음과 같은 상황이 발생합니다.

A: This line should also replace line X
...
X: This is line should be replaced

나는 그 일을 효율적으로 수행하지 못한다고 생각합니다.

내가하는 일 :

  • A 행으로 이동 : AG
  • Yank 라인 A : yy
  • X 행 : XG로 이동
  • A 행 붙여 넣기 : P
  • 이전 줄로 이동 : j
  • 이전 줄 삭제 : dd

이것은 라인 X가 이제 기본 레지스터에 있다는 추가적인 단점이 있습니다. A로 교체해야하는 다른 라인을 찾으면 짜증납니다. 추가 레지스터 ( “ayy , “aP )에 양킹하여 붙여 넣으면 이 간단한 작업도 가능합니다. 덜 효율적입니다.

내 질문 :

  • 이전에 잡아 당긴 줄을 대체하는 내장 Vim 명령을 놓쳤습니까?
  • 그렇지 않은 경우 기본 레지스터에 늘어진 줄을 남기거나 복원하는 내 명령을 어떻게 바인딩 할 수 있습니까?


답변

내가 할 것 :

  1. aG
  2. Y
  3. xG
  4. Vp

당신은 정상 모드를 종료 할 필요가 없습니다,하지만 하지 라인을 가득 차면. 그러나 V"0p2 단계에서 항상 줄을 잡아 당기는 것을 사용할 수 있습니다 .


답변

Vp: 줄을 선택하고 홱 잡아 당긴 것을 붙여 넣기


답변

이것은 X 행이 이제 기본 레지스터에 있다는 추가 단점이 있습니다 .A로 대체해야 할 다른 행을 찾으면 짜증납니다.

일반 레지스터에 영향을주지 않고 텍스트를 삭제하려면 블랙홀 레지스터를 사용할 수 있습니다 "_.

"_dd


답변

사용 Vp또는 VP줄 위에 붙여 넣기 를 제안하는 답변을 기반으로 -yank 레지스터의 내용을 변경하지 않기 위해 가장 인체 공학적인 명령은 다음과 같습니다.

VPY


답변

  1. yy
  2. j (바꾸려는 줄로 이동)
  3. Vp (대문자 v 다음에 p가 얀크 된 내용으로 대체 됨)

답변

명령 줄 (Ex) 모드를 사용하고 다음 두 명령을 수행합니다.

:XmA
:Ad

이것은 X 행을 A 바로 아래로 이동 한 다음 A를 삭제하면 해당 행이 위로 이동합니다.

예를 들면

:7m3
:3d


답변

  1. 첫 번째 줄의 시작으로 이동합니다.

  2. y, $– 끝에 줄 바꿈없이 줄 복사

  3. 대상 라인의 시작으로 이동합니다.

    1. V, p– 하나의 대상 줄만 교체

    2. c, c, Ctrlr, 0, Esc– 원래 양키와 목표 라인을 교체

  4. 다음 타겟 라인의 시작으로 이동합니다.

  5. . – 4.2에서 실행 된 명령을 반복합니다.

노트:

  • 4.1는 y, $당신이 경우에 때문에 y, y또는 Y당신은 LINEBREAK을 복사합니다, 그리고 Ctrlr0실제로 목표 라인 아래 LINEBREAK을 추가합니다.

  • 4.2는 V p기술적으로 마지막 작업이 삭제이기 때문에 반복으로 작동하지 않는을 대체 하므로 .줄을 삭제합니다.

  • EX 모드 (명령 줄)에서 ‘현재 줄을 레지스터로 교체’를 실행하는 방법을 아는 사람이 있다면 여러분의 의견을 듣고 싶습니다 (그리고 문서를 어디에서 찾았는지 알고 싶습니다). 4.2보다 빠르거나 줄 바꿈 경고가없는 반복 가능한 EX 명령이있을 수 있습니다.