Search
Duplicate

vim에서 연속된 숫자 입력하기

간단소개
vim에서 증가하는 숫자의 배열을 한번에 입력하는 방법
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
Vim
Scrap
태그
vim
9 more properties
종종 특정 범위의 연속된 숫자들을 한번에 입력하고 싶은 경우가 있다.
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
복사
참고한 링크: