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


85

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

예:

line1
line2
line3

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

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


파일 상단에 빠른 정의 목록을 만드는 데 적합합니다.
Joe McGrath

답변:


132

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

"ayy
"예
"ap

11
명명되지 않은 레지스터에 추가 할 수있는 방법이 있습니까? (메인 하나)
Zaffy


사람들을 저장하기 위해 ^^, IMO를 방문하면 명명 된 레지스터를 사용하는 것이 더 쉽습니다. 당신이 입력하면 '는 등록을 추가'A "는 '은을 ... 등록하여'생각"
롭 Kielty은

12

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로 표시 한 문자 바로 앞 의 문자 까지 삭제하므로 유용합니다 .


'a, .ya A는 작동하지만 a 앞에 체크 표시를하면->`a는 다음과 같이 표시됩니다. E492 : 편집기 명령이 아닙니다 :`a, .ya A. 다른 문자를 사용하지 않는 데 도움이되었을 것입니다. 예에서 마커에 대한 것보다 어떤 문자가 어떤 것인지 분명합니다. :)
justin w
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.