2014-09-04 3 views
1

내가 nand2tetris에서 일하고 있어요하여 현재 라인의 정수를 증가하고, 나는이처럼 보이는 결국 많은 파일로 끝날 : 그래서 난을 확 잡아 당기는했습니다방법 1

Bit(in=in[0], load=load, out=out[0]); 
Bit(in=in[1], load=load, out=out]1]); 
... 
Bit(in=in[15], load=load, out=out[15]); 

을 첫 번째 줄을 누른 다음 15p를 사용하고 :s/0/i/g 15 번 수행합니다 (여기서 i은 필요한 색인입니다). 나는 내가 이것을 :s/\[\d\]/\[i\]/g으로 바꿀 수 있다는 것을 알아 챘지만, 여기에서도 나는 명령을 실행할 때마다 수동으로 i의 값을 설정했다. i이 자동으로 \d+1으로 계산되도록 명령을 실행할 수 있습니까? 수동으로 값을 지정하지 않고 각 행에 대해 명령을 반복 할 수 있습니까?

+0

나는 대답도 원한다. 하지만 나는 우리가 단지 정규 표현식으로 그것을 얻을 수 없다는 것을 두려워합니다. – HuStmpHrrr

+0

대체를 사용할 수 있지만'\ ='를 사용해야합니다. 예 : ': s/\ d \ +/\ = str2nr (submatch (0)) + 1 /'. 자세한 정보는': h : s \ ='를보십시오. –

+0

@PeterRincker str2nr이 필요하다고 생각하지 않습니다. – FDinoff

답변

2

내가 여기에 피터 Rincker (온 - 더 - 플라이 매크로가 굉장하다)하지만처럼 할 것 그냥의 이익을 위해 다른 솔루션입니다 : 이것은 본질적으로 텍스트에 줄 번호, 숫자를 증가합니다 :

yy       " yank current line 
15p      " paste 15 times 
:,']s/0/\=line('.')-1/g " substitute every 0 from cursor to last 
          pasted line with the current line number 
+0

+1 항상 좋은 옵션이 있습니다! 코드 블록이 파일에서 아래쪽에 있으면'-1'을 다른 숫자로 조정해야 할 수도 있습니다. 또는':, '] s/0/\ = line ('. ') - line ("'[")/g'과 같이 좀 더 속임수를 쓸 수 있습니다. –

+0

@PeterRincker, 감사합니다. 당신은 아주 좋은 지적을했습니다. – romainl

6

한 가지 방법은 Vim 매크로를 사용하는 것입니다.

개요 것은

복사 라인은 행을 붙여 넣습니다. 두 숫자를 모두 늘리십시오.

이 레지스터 q에 매크로를 저장 매크로

qqyyp<c-a>l<c-a>q 

.

@q을 통해 매크로를 실행하거나 [email protected]을 통해 매크로를 실행하십시오. 더 도움말을 참조하십시오

: 당신이 올바르게 수행 할 작업을 이해한다면

:h q 
:h ctrl-a 
0

, 당신이 정력에 increment 패키지를 사용할 수 있어야합니다. 텍스트의 첫 번째 라인을 가지고 그것을 15p를 사용하여 15 배 붙여 넣습니다

Bit(in=in[0], load=load, out=out[0]); 
Bit(in=in[0], load=load, out=out[0]); 
Bit(in=in[0], load=load, out=out[0]); 
Bit(in=in[0], load=load, out=out[0]); 
Bit(in=in[0], load=load, out=out[0]); 
Bit(in=in[0], load=load, out=out[0]); 
Bit(in=in[0], load=load, out=out[0]); 
Bit(in=in[0], load=load, out=out[0]); 
Bit(in=in[0], load=load, out=out[0]); 
Bit(in=in[0], load=load, out=out[0]); 
Bit(in=in[0], load=load, out=out[0]); 
Bit(in=in[0], load=load, out=out[0]); 
Bit(in=in[0], load=load, out=out[0]); 
Bit(in=in[0], load=load, out=out[0]); 
Bit(in=in[0], load=load, out=out[0]); 
Bit(in=in[0], load=load, out=out[0]); 

을 첫 번째 줄에 '0'을 선택 할 수 있으며, Ctrl 키-V를 사용하여 시각적 블록 모드를 입력합니다. 시각 블록 모드에서 맨 아래로 강조 표시하여 모든 0이 강조 표시되도록하십시오. 그런 다음 :Inc<CR>을 입력 할 수 있습니다.

Bit(in=in[ 0], load=load, out=out[0]); 
Bit(in=in[ 1], load=load, out=out[0]); 
Bit(in=in[ 2], load=load, out=out[0]); 
Bit(in=in[ 3], load=load, out=out[0]); 
Bit(in=in[ 4], load=load, out=out[0]); 
Bit(in=in[ 5], load=load, out=out[0]); 
Bit(in=in[ 6], load=load, out=out[0]); 
Bit(in=in[ 7], load=load, out=out[0]); 
Bit(in=in[ 8], load=load, out=out[0]); 
Bit(in=in[ 9], load=load, out=out[0]); 
Bit(in=in[10], load=load, out=out[0]); 
Bit(in=in[11], load=load, out=out[0]); 
Bit(in=in[12], load=load, out=out[0]); 
Bit(in=in[13], load=load, out=out[0]); 
Bit(in=in[14], load=load, out=out[0]); 
Bit(in=in[15], load=load, out=out[0]);