이 미친 vim 등록 마법(알파 레지스터 증가)을 매크로에서 수행할 수 있습니까?

이 미친 vim 등록 마법(알파 레지스터 증가)을 매크로에서 수행할 수 있습니까?

4개의 행이 있습니다.

foo ["bar"]
baz ["k"]
daskhfkjhadsfj ["askfjhfjdsh"]
dfjhafkjhfha ["skkksks"]

단어를 가져와서 레지스터로 가져오는 매크로를 만들고 싶지만 레지스터가 증가하도록 하고 싶습니다. 예를 들어:

f"l"ayf"j0
f"l"byf"j0
f"l"cyf"j0
f"l"dyf"j0

나중에 붙여넣을 수 있도록 레지스터가 자동 증가하는 방식으로 이 작업을 수행할 수 있는 방법이 있습니까?

jjjj
f"ap   
j
f"bp

나는 레지스터 번호와 yi를 알고 있습니다. - 나는 그것을 알파 레지스터와 함께 사용하고 싶습니다. 또한 내가 선택한 레지스터가 충돌할 수 있다는 것도 알고 있습니다. 당신은 내 매크로가 z로 기록할 것이라고 가정할 수 있고 나는 사용된 것을 나타내기 위해 af를 사용하고 싶습니다 등록하다.

매크로를 사용하여 이를 수행하는 방법을 제안할 수 있습니까?

답변1

그리고매크로? 아마도. 그리고물론 매크로죠!

먼저 몇 가지 설정을 지정합니다.

:set nrformats=alpha
:let @y="\"a"

이제 미친 Vim 등록 마법사를 살펴보겠습니다.

qzf"l@yyf"GoEsc"yp^A0"yy$dd^Oj0q

전략은 하나의 매크로( y)를 사용하여 다음에 어떤 레지스터가 사용되는지 추적하고 다른 매크로를 사용하여 이를 수정하는 것입니다.

  • f"l@yyf"귀하가 주신 원본이므로 @y대신 사용했습니다 "a. 직접 입력하는 대신 y매크로를 사용하여 입력합니다."a
  • GoEsc"yp파일 끝으로 이동하여 거기에 새 줄을 추가하고 레지스터의 내용을 붙여넣습니다 y.
  • ^A커서 아래에 문자를 추가합니다. 그랬다면 a지금일 것이다 b. nrformats=alpha문자에도 작동하도록 미리 설정해 두었습니다 .
  • 0"yy$업데이트된 텍스트를 다시 레지스터로 가져옵니다 y.
  • dd^O출발선을 비우고 이전에 있던 곳으로 돌아가서
  • j0그것은 당신의 나머지 부분입니다.

관련 정보