Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>
이동

2. 이동

2.1. 문자단위 이동

C 소스파일을 열어서, W, e, b를 입력해 보기 바란다. vim은 각 토큰을 구분해서 빠르게 다음 토큰으로 이동 가능하도록 도와준다. 이 키들을 이용하면 좀더 빠르게 토큰사이의 이동이 가능하다.

	...
	if((NULL == x) && y > z)
	...
위의 if문 코드에서 w를 눌러보면 각 토큰의 처음으로 이동하는 걸 확인할 수 있을 것이다. 처음에는 ( 다음에는 == 토큰으로 이동한다.

e는 각 토큰의 마지막으로 이동한다는 걸 제외하고는 w와 동일하다.

b는 뒤로 이동한다는 걸 제외하고 w와 동일하다.

2.2. {,},[[,]] 키

{와 }는 문단단위의 이동을 위해서 사용한다. 문단은 비슷한 하나의 사물을 기술하는 여러 문장의 모음으로, 일반적으로 문서의 최소단위로 사용되며, 문서를 좀더 쉽게 읽을 수 있도록 도와준다.

/* first C-statment */
...
...


/* Next Set of C-statment */
...
...
위의 예에서 {를 이용하면 문단의 처음이나 끝으로 한번에 이동할 수 있음을 확인할 수 있다.

C 코드 역시, 가독성을 높이기 위해서 아래의 예처럼 문단단위로 작성되는 경우가 많다. 논리적으로 비슷한 코드라인들을 하나의 문단으로 작성한다.(Vim은 한줄의 공백을 만나면 그다음 문단으로 생각한다)

void functin1()
{
	/* Declarations */
	int x;
	char y;
	double z;

	/* some code */
	x = 1;
	y = 'a';
	z = 1.2;

	/* some more code */
	x++;
	y++;
	z++;
}

[[]]는 {사이를 이동할 때 사용한다.

void foo()
{
 // ....
}

void bar()
{
 // ....
}
[[는 이전의 {을 찾기위해서, ]]는 다음의 {를 찾기 위해서 사용한다. 이 키를 이용하면, 함수나 루프문의 처음을 빠르게 탐색 할수 있다. 위의 예제 코드에서 [[와 ]]를 이용해서 foo와 bar함수의 처음으로 이동하는걸 확인할 수 있을 것이다.

이외에도 [], ][와 같은 조합도 사용할 수 있다. 이들 키는 }를 탐색하는데 사용한다. []는 이전의 } ][는 다음 {로 바로 이동할 수 있다.

이들 키는 사용하기에 직관적이지 않다라는 단점을 가진다. 그래서 요즘 배포되는 vim은 좀더 직관적으로 사용가능하도록 다음과 같은 맵핑을 제공한다.

:map [[ ?{<CTRL-VCTRL-M>w99[{  
:map ][ /}<CTRL-VCTRL-M>b99]}  
:map ]] j0[[%/{<CTRL-VCTRL-M>  
:map [] k$][%?}<CTRL-VCTRL-M>
[{와 ]}이 훨씬 직관적인 사용환경을 제공해줌을 알 수 있다.

2.3. % 키

if ((x==y) && ((z-=a) || (y>x)))
위의 코드는 여러개의 괄호가 중첩되어 있어서 괄호의 범위를 찾기가 쉽지 않다. %키를 이용하면 괄호의 시작과 끝위치를 쉽게 찾을 수 있다. %키는 이외에도 중첩된 #if, #ifdef, #else, #elif, #endif 문을 검사하기 위한 용도로도 사용할 수 있다.