Vim에서 여러 줄에서 어떻게 복사 할 수 있습니까? (범위가 아님);


20

내가 가지고 있다고 가정

1 - funct1
2- funct 2
3 - funct 3 
4 line 4

1과 3 행 (한 줄의 범위가 아님)을 복사하여 예를 들어 8 행에 붙여 넣을 수 있습니까? |( 1y|3y) 와 같은 arg를 사용 하여이 작업을 수행하면 여러 레지스터에 줄을 꽂을 수 있습니다. 그러나 여러 레지스터에서 한 번에 어떻게 넣을 수 있습니까?

답변:


33

소문자 대신 대문자를 사용하여 지우는 대신 레지스터에 추가 할 수 있습니다.

예를 들면 다음과 같습니다.

:1y a      # copy line 1 into register a (erases it beforehand)
:3y A      # copy line 3 into register a (after its current content)
8G  # go to line 8
"ap        # print register a

1
로 일반 모드에서이 작업을 수행 할 수도 있습니다 "ayyjj"Ayy"ap.
wchargin

5
(또는 1G"ayy3G"Ayy8G"ap명시적인 줄 번호)
wchargin

1
그냥 G줄이 <C-G>아닌가?
David

1
이거 대박. 버퍼에 A원하는만큼을 계속 추가 할 수 있으며 모든 것을 유지합니다. 다시 시작하려면, 무언가를 등록하십시오a
CornSmith

1
@CornSmith Nitpick : 버퍼 는 vim의 맥락에서 매우 특정한 용어입니다. "aA는 레지스터 .
Doorknob

1

다음 :copy과 같이 약어를 사용할 수있는 명령을 사용할 수 있습니다 :t.

:1t8
:3t8

여러 줄 (예 : 1에서 3까지의 모든 줄)을 복사하려면 다음과 같이하면됩니다.

:1,3t8

번호로 줄을 복사하고 싶지만 RANGE OF LINES ... t 명령과 같은 줄로 줄을 추가 할 수 있습니까?
Whats Myname

0
1Gyy7Gp #use 7 if you wish to paste the line at 8
3Gyy8Gp #use 8 if you wish to paste the line at 9

이것들은 :t명령 으로 더 잘 표현 될 수 있으며 , "또는 0레지스터를 지우지 않습니다 .
Doorknob
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.