[vim] 덮어 쓰지 않고 vim 레지스터에 줄을 추가하는 방법

레지스터에서 한 줄을 잡아 당기고 싶습니다. "{register}y하지만 이전에 레지스터에 있던 것을 덮어 쓰지 않습니다. 나는 종종 레지스터에서 연속적이지 않은 줄을 복사해야하고, 때때로 레지스터를 스택처럼 사용하고 싶습니다.

예:

line1
line2
line3

나는 복사 할 line1그 위에 커서를 넣고 입력하여, "ay에 다음가는 line3및 수행 "ay. 그럼, 할 때 "ap, BOTH line1line3붙여 넣을 수 있습니다.

플러그인없이 가능합니까? 플러그인?



답변

명명 된 레지스터에 추가하려면 해당 대문자를 사용하십시오. 즉 귀하의 예에서 :

"ayy
"예
"ap


답변

MarkB의 응답을 확장하기 위해 마커를 사용하여 yank에 대한 텍스트 블록을 선택할 수도 있다는 것을 알고 계셨습니까?

잡아 당길 블록의 첫 번째 줄로 이동하여 문자를 마커로 선택한 후 표시 명령을 입력합니다.

ma  (entered in command mode, i.e. no colon)

그런 다음 잡아 당길 블록의 맨 아래로 이동하여 다음 명령을 입력하십시오.

:'a,.ya A

이 명령은 내 마커가 포함 된 줄에서 현재 줄까지의 텍스트 블록을 가져 와서 버퍼 a로 잡아 당기는 것을 의미합니다. 언급 한 MarkB와 동일한 규칙이 적용됩니다. 버퍼를 덮어 쓰려면 소문자 버퍼 이름을 사용하십시오. 버퍼에 추가하려면 대문자 버퍼 이름을 사용하십시오. 따라서이 경우 이것은 버퍼 a의 내용에 추가됩니다.

NB 마커에 사용 된 ‘a’는 레지스터를 선택하는 데 사용되는 ‘a’와 관련이 없습니다. (AFAIK이지만 YMMV)

BTW ‘a (아포스트로피 a)는 마커 a를 포함하는 줄을 나타냅니다. `a (역 따옴표 a)는 ma를 입력했을 때 커서 아래에있는 문자를 나타냅니다.

`ad`b (also entered in command mode)

마커 a로 표시된 문자 사이의 텍스트 를 마커 b로 표시 한 문자 바로 앞 의 문자 까지 삭제하므로 유용합니다 .


답변