종종 특정 범위의 연속된 숫자들을 한번에 입력하고 싶은 경우가 있다.
1
2
3
4
...
JavaScript
복사
숫자가 몇 개 안되는 간단한 경우 ctrl-a, ctrl-x 등으로 커서 위치의 숫자를 1씩 증가/감소시킬 수 있다. 하지만 숫자 범위가 커질 수록 몹시 번거로울 것이다. 이럴 때 어떻게 한번에 입력할 수 있는지 찾아봤다.
1. 기초
arr[0] = 0;
arr[0] = 0;
arr[0] = 0;
arr[0] = 0;
arr[0] = 0;
JavaScript
복사
첫 행 좌변 0의 위치에 커서를 놓고, ctrl-v를 누르면 세로로 여러 줄을 선택할 수 있다.
그 상태에서 g ctrl-a를 누르면 아래와 같이 된다.
arr[1] = 0;
arr[2] = 0;
arr[3] = 0;
arr[4] = 0;
arr[5] = 0;
JavaScript
복사
이 방법은 vim 8버전 이상만 가능하다고 한다. 다른 방법은 없을까?
2. 다른방법
:put=range(-3,2)
JavaScript
복사
vim의 노말 모드에서 위와 같이 입력해보자.
-3 ~ 2 까지의 정수가 한 줄씩 입력된다.
-3
-2
-1
0
1
2
JavaScript
복사
3. 살짝 응용 - formatted string
:put=map(range(1,9), 'printf(''%d * %d = %d'', v:val, v:val, v:val * v:val)')
JavaScript
복사
위와 같이 입력하면 아래처럼 나온다. ( 따옴표는 모두 작은 따옴표이다.)
printf 쓰듯이 사용하면 되는 듯하고, 개행은 따로 넣어줄 필요 없는 것 같다. 이를 응용하면 반대로 감소하는 경우나, 2씩 증가하는 경우 등 좀 더 다양하게 사용할 수 있을 듯하다.
1 * 1 = 1
2 * 2 = 4
3 * 3 = 9
4 * 4 = 16
5 * 5 = 25
6 * 6 = 36
7 * 7 = 49
8 * 8 = 64
9 * 9 = 81
JavaScript
복사
참고한 링크: