2013-11-24 4 views
8

많은 데이터 소스에서 잘라 내기 및 붙여 넣기를하고 있습니다. 붙여 넣은 코드의 첫 번째 줄은 원래 코드의 두 특정 지점 사이에 가고 두 번째 줄은 동일하게되도록 여러 줄 코드에 여러 줄로 코드를 삽입하려고합니다. 그것은 여러 코드로 분할 된 코드 블록을 삽입하는 것과 같습니다. 여러 줄 코드에서 여러 줄에 코드를 삽입하는 방법은 무엇입니까?

enter image description here

내가 어떻게 할 수 있습니다

아래 .gif 참고 사진은 내가 무슨 뜻인지 보여? VIM으로 시도 중입니다 CTRL + V 멀티 라인 코드를 붙여 넣을 수 없습니다. 그것은 나를 CTRL + V를 사용하여 작동

VIOLET=SpectralBand([0.380,0.450],'violet') 
BLUE= SpectralBand([0.450,0.495],'b') 
GREEN= SpectralBand([0.495,0.570],'g') 
YELLOW=SpectralBand([0.570,0.590],'y') 
ORANGE=SpectralBand([0.590,0.620],'orange') 
RED= SpectralBand([0.620,0.750],'r') 

"viol3et", 45839, 
"bl3ue" , 43903, 
"gre3en" , 28392, 
"y3ellow", 23049, 
"o3range", 12389, 
"r3ed" , 32840, 
+0

아마도 여러 개의 커서를 살펴보아야 할 것입니다.이 커서는 당면한 작업에 대한 사용자 지정 함수를 작성하는 것과 관련하여 몇 가지 아이디어를 제공합니다. https://github.com/magnars/multiple-cursors.el – lawlist

답변

2

커서로 왼쪽 상단을 선택하고 Control + V를 입력 한 다음 마지막 행으로 이동하여 $를 입력하여 모든 행의 끝을 가져옵니다 (다른 답변에서는 빠졌습니다). 그런 다음 d를 사용하여 삭제하고 대상으로 이동 한 다음 p를 사용합니다.

당신 정확한 샘플의 경우, 정력의 솔루션입니다 :

G0<c-v>{j$dggf(p 

는 다음과 같이 분해 된 :

G  go to last line of file 
0  go to its first character 
<c-V> to start a blockwise selection 
{  go to previous empty line 
j  go to next line (hence the beginning of block) 
$  extend the blockwise selection to end of ALL lines (that was my point) 
d  delete and store the block 
gg go to first line of file 
f( go to next character '(' if on same line. 
p  to paste the block after the column of current character. 

$에 대한 대안은

:set virtualedit=all 

수 있도록하는 것입니다 그것은 할 것 목적지에 커서를 놓을 수없는 경우 작업 (줄 끝을 벗어난 경우).

+0

감사합니다 G0 {j $ hdggf (p 저는 VIM의 초보자입니다. 아주 좋은 대답 인 것 같습니다. –

+0

VIM에 투자 할 시간이 있다면 vimtutor 명령을 사용해보십시오 – user2987828

+0

+ 1 고마워요! (추신 : 두 번 다시 시도해 보았습니다.) –

3

가, 다음, 화살표 또는 이동 문자 (h, j, kl)로 전체 블록을 선택 잘라 : 여기

은 샘플입니다 D으로, 첫 번째 줄의 첫 번째 괄호 뒤에 커서를 놓고 당신은을 사용할 수 있습니다 페이지

+1

당신이 정말로 내려갈 때 그가 다음 줄을 고르고 붙여 넣을 때 그는 모두 같은 줄에 놓습니다. – Johan

+1

@Johan : 물론입니다. 나는 그것을 시험했다. 내 버전 : 리눅스에서'VIM - Vi IMproved 7.4'. – Birei

+0

@ Johan 제게 그것은 작동합니다. Ingo가 먼저 CTRL + V로 'viol3et' 블록을 선택하고 Ctrl + V를 사용하여 복사하지 않도록하십시오. 감사합니다. Birei! –

4

를 사용(C-x r M-w) 및 yank-rectangle (C-x r y)을 사용하여 설명하는 동작을 얻을 수 있습니다.

자세한 내용은 emacs 설명서의 Rectangles 섹션을 참조하십시오. Vim은 붙여 넣기 동안 작동 방식을

4

십중팔구 동안 선택의 유형에 의해 결정됩니다. (많은 Windows 설치 또는 Q) Ctrl 키 + V : 블록 단위 영상 모드viol3et 블록을 선택해야합니다.

또는, gbp과 (목표 라인 사이에) 붙여 넣 내 UnconditionalPaste plugin 단지 십중팔구/전체 라인을 삭제합니다 (viol3et 라인, 예를 들어 6dd 동안)를 사용 할 수 있습니다.

관련 문제