일반 모드에서 단어를 양손으로 바꾸는 방법


25

단어를 이전에 다른 단어로 바꿔야 할 때 일반적으로 부 자연스러운 워크 플로를 사용합니다.

이 텍스트가 있다고 가정 해 봅시다.

foo bar buzz

그리고 나는 잡아 당기고 내가 이전에 잡아 당 겼던 foo것으로 대체 하고 싶습니다 bar.

yanking 후 foo다음 옵션이 표시됩니다.

옵션 1

  1. 에 커서를 놓습니다 bar과를w

  2. 넣어 foo앞에 barP

  3. 상의 커서를 넣고 b나머지의 bar와 함께 단어를 삭제de

옵션 2

  1. 커서를 바에 놓으십시오 w

  2. de지우는 데 사용bar

  3. 와 레지스터 0의 내용을 넣어 "0P(내가 삭제하기 때문에 bar, foo간단한에 더 이상 액세스 할 수 없습니다 p)

두 가지 방법 모두 나에게 너무 복잡해 보이며이 작업을 수행하는보다 효율적인 방법이 있지만 확실하지 않습니다. 이 아이디어는 삭제와 넣기 동작을 하나만 결합하거나 원하는 단어를 간단한 단어로 넣을 수 있도록 적어도 삭제 된 단어를 yank 레지스터에 보관하지 않는 것 p입니다.

또한 교체 모드가 트리거 된 것을 알고 R있지만 눌린 것을 넣을 수는 없습니다.

TL; DR : 단어를 yank register의 내용으로 바꾸는 방법?

답변:


31

이미 빠지게 한 가정 foo으로 ye또는 이와 유사한, 커서 어딘가에 켜져 있는지 foo, 당신은 사용할 수 있습니다 Wvep:

  • W가야합니다 bar(이것은 분명히 선택 사항이며 현재 커서 위치에 따라 다릅니다).
  • v 시각 모드를 시작합니다.
  • e단어의 끝으로 가려면 (과 같은 다른 동작을 사용할 수도 있습니다 iw);
  • p붙여 넣기 foo; 이것은 현재 시각적 선택을 대체합니다 (이름없는 레지스터에 배치됨 "").


6

다른 방법을 찾았습니다. 옵션 2와 약간 비슷하지만 레지스터의 상태를 엉망으로 만들지 않는 이점이 있습니다.

아이디어는 " 블랙홀 레지스터 " 를 사용하는 것입니다 .이 레지스터는 액세스 "_할 수 있으며 쓸 수 있지만 읽을 수는 없습니다. 블랙홀처럼이 레지스터는 들어가는 모든 것을 완전히 사라지게합니다. 여기서 우리는 그것을 사용할 수 있으므로 삭제 foo후에도 yank 레지스터에 유지됩니다 bar.

이 솔루션을 사용하면 yanking 후 worflow는 다음과 같습니다 foo.

  • bar함께 가는 W(또는 물론 필요한 단어)
  • "블랙홀 레지스터"를 사용 bar하여"_de
  • foo양키 레지스터에서 넣기 P. 가득 차면 레지스터는 여전히 포함되어 foo있기 때문에 bar검은 구멍에 갔다.

그것이 @Carpersmoker의 솔루션 ( vimgolf @Carpetsmoker wins ) 보다 나은 솔루션인지 확실 하지 않지만 블랙홀 레지스터에 대해 몰랐으며 일부가 관심을 가질 것이라고 생각했습니다.


3
  1. "foo"의 시작으로 이동하십시오. 를 누릅니다 yiw. 그것은 내면의 말을 경감시킵니다.

  2. 문자를 눌러 "bar"로 이동하십시오 w. 그런 다음 그것을 선택하고 다시 잡아 당기십시오.viw"0p

내가 사용 ciw하고 yiw많은.


4
텍스트 객체를 사용하는 iw것은 흥미롭지 만 솔루션은 실제로 @CarpetSmoker의 것과 동일합니다. 두 번째 단어를 시각적으로 선택하고 첫 번째 단어를 넣습니다. 또한 귀하의 솔루션이 레지스터 p를 사용 하는 대신 간단한 것으로 작동한다고 생각합니다 "0.
statox

1
  • 커서가 단어의 아무 곳에 나 있으면

    • yiw-단어를 잡아 당겨 0레지스터에 저장하십시오 .
  • 교체 할 대상 단어로 이동

    • ciw 단어를 삭제하고 삽입 모드로 전환합니다.
    • ctrl-r. A는 "호출 할 레지스터를 묻는 나타납니다.
    • 0 구부러진 단어를 붙여 넣습니다.

양키 단어는 (보통!) 0레지스터에 저장됩니다 . :registers저장된 버퍼를 보려면 참조하십시오 . 이것은 긴 절차처럼 보일 수 있습니다. IMHO 이것은 훨씬 더 복잡한 레지스터 트릭의 문을 열어줍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.