it-gundan.com

vim에서 커서를 이동하지 않고 특정 줄을 잡아 당기는 방법은 무엇입니까?

예를 들면

alt text

4 행을 12 행에만 붙여 넣을 수있는 방법 커서를 이동하지 않고 행 4에?

alt text

40
Lazer

커서가 이미 12 행에 있으면 간단한

 : 4y 
 P 

나를 위해 해.

53
frabjous

이건 어때 : 커서가 11 번 줄에 있고 "vi"모드에 있습니다.

:4co.<return>

분명히 패턴으로도 할 수 있습니다.

:/^Yank/co.<return>

"co"(복사) 대신 "mo"(이동)를 사용하여 줄을 홱 잡아 당기지 않고 그냥 이동할 수 있습니다.

10
Bruce Ediger

이 시도:

:4,4y  
P
9
Louis Salin

시험:

:4co11

0의 인수를 사용하여 1 행에 붙여 넣을 수 있습니다. 이것은 범위에서도 작동합니다.

:m,n co k

m 행에서 n 행을 k+1 행으로 복사합니다. 또한 버퍼의 위치는 중요하지 않습니다. move 명령 m도 비슷하게 작동합니다.

8
gvkv

이렇게해야합니다.

:4,12y
p
k
2
Umang

최단 :

:1t.는 현재 아래의 첫 번째 줄을 복사합니다.

범위 포함 : :1,4t.는 현재 아래의 1 ~ 4 행 (포함)을 복사합니다.

상대 줄 번호로도 가능합니다.

:-1t.는 현재 아래의 이전 줄을 복사합니다.

귀하의 예에서 :4t-1는 원하는 줄 아래 네 번째 줄을 복사합니다.

참고 : :t:co[py] 명령의 동의어입니다.

2
Erwin Rooijakkers

다른 사람들은이 작업을 수행하는 가장 직접적인 방법 인 :4y를 이미 언급했지만 유용 할 수있는 두 가지 메모를 추가하고 싶습니다.

첫째, :help range를 입력하면 Ex 스타일 명령에 적용하기 위해 범위를 사용하는 방법에 대해 모두 배울 수 있습니다. 많은 경우에 매우 유용하며 줄 번호를 사용하는 것보다 훨씬 더 다양합니다. 예를 들어 문서 시작 후 "yank"로 시작하는 첫 번째 줄을 잡아 당기려면 (첫 번째 줄에 있더라도) :0/^yank/y를 사용합니다. 범위의 가장 강력한 부분은 범위를 결합하는 기능입니다. 예를 들어 :./^Chapter/+50?Pete?d는 "단어 장 (현재 줄에서 앞으로 검색)으로 시작할 다음 줄을 찾은 다음 50 줄 앞으로 건너 뛰고 검색합니다. 단어 Pete에 대해 뒤로 가서 찾은 첫 번째 줄을 삭제하십시오. " 실제로 커서를 움직이지 않는다는 점을 제외하고는 말한대로 수행합니다.

(저는이 유형의 범위 사양을 사용하여 커서 아래의 함수 이름을 검색 한 다음 "Description"이라고 표시된 다음 줄을 검색하고 특정 레지스터에 끌어 당기는 등의 문서 작성을 자동화했습니다.)

다른 팁은 점프에 대해 알아야한다는 것입니다. 자세히 알아 보려면 :help jump-motions를 입력하세요.하지만 여기서 관련되는 방식은 4 번 줄로 이동 한 다음 4Gyy''를 사용하여 RETURN 할 수 있습니다 (또는 아포스트로피 대신 백틱을 사용하여 뒤로 이동하는 것). 당신이 시작했던 것과 같은 LINE이 아니라 정확한 시작 위치로.)

2
Wildcard

Erwin Rooijakkers의 대답 을 기반으로하면 커서 위치에 관계없이 11 행 아래에 4 행이 복사됩니다.

:4t11
0
Lorin Hochstein