09 Vim 기본 - 문자열 찾기

반응형

현대 텍스트 에디터는 모두 찾기 기능을 갖고 있다. 윈도우 기준으로 보통 F3 이나, Ctrl + F 로 찾을 수 있고, 바꾸기는 Ctrl + R 단축키로 대부분 실행된다. Vim 에서도 찾기 기능을 제공한다.

Vim 문자열 찾기

vim 에서 문자열을 찾는 방법은 2가지다. 커서 다음 부분을 찾아갈지, 커서 이전 부분을 찾아갈지에 따라 두 가지로 나뉜다.

/ - 다음 문자열 찾기

  • /{찾을 문자열} - / 키 입력 후 '찾을 문자열'을 입력하여 현재 커서 다음에 나타나는 '찾을 문자열'로 커서를 이동시킬 수 있다.

Normal 모드에서 / 를 입력하면 하단 Status Bar 에 그대로 / 가 표시되는 것을 확인할 수 있다. 이 때, 찾기를 원하는 문자열을 써 넣으면 된다. 찾기를 수행하면 에디터는 해당 문자열을 하이라이트 해준다.

vim 에서 찾기, / 키를 활용한다. 찾기 동작을 수행하면 해당 문자열로 커서가 이동한다.

n - 다음 찾기 대상으로 커서 이동

  • n - 찾기(/) 명령 수행 후 동일한 다음 찾기 대상으로 이동할 수 있다.

/ 명령어를 수행하여 찾기를 진행했다면, 이제 n 키를 눌러 다음 찾기 대상으로 이동할 수 있다.

Vim 찾기(/) 를 수행했다면, n 키를 활용하여 다음 찾기 대상으로 이동할 수 있다.

N - 다음 찾기 대상으로 커서 이동

  • N(shift + n) - 찾기(/) 명령 수행 후 동일한 이전 찾기 대상으로 이동할 수 있다.

N 명령어는 n 명령어와 반대되는 방향으로 커서를 이동시켜준다.

Vim 찾기(/) 를 수행했다면, N(shift + n) 키를 활용하여 이전 찾기 대상으로 이동할 수 있다.

? - 이전 문자열 찾기

  • ?{찾을 문자열} - ? 키 입력 후 '찾을 문자열'을 입력하여 현재 커서 이전에 나타나는 '찾을 문자열'로 커서를 이동시킬 수 있다.

이는 / 명령어와 탐색 순서가 반대이다. 즉, 현재 커서 이전의 부분부터 '찾을 문자열'을 탐색한다. 굳이 왜 이게 있는지 궁금하기도 하겠지만, 수십만 라인이 쌓여있는 로그에서 최근에 쌓인 로그는 보통 맨 아래에 있다. 이를 '찾기'를 이용해서 찾을 때 첫번째 줄부터 찾고자 하는 문자열을 탐색하는 것보다, 마지막 줄로 이동하여 이전에 나타나는 최초의 문자열을 찾는 것이 빠르다.

n 키는 찾기를 / 로 했는지 ? 로 했는지에 따라 그 방향이 달라진다. n 키는 '찾기가 탐색하는 방향'을 그대로 따라간다. 따라서 ? 키로 찾기를 했을 때 n 키의 탐색 방향도 '이전 방향'이다. 마찬가지로 이 상황에서 N 키는 '다음 방향'을 의미한다.

? 명령어를 활용하여 '이전 탐색'을 수행하는 모습, 마찬가지로 n, N 을 활용하여 다음 등장부분으로 커서를 이동시킬 수 있다.

찾기(/, ?, n, N)는 모션

믿기지 않겠지만, 찾기도 모션이다. 즉, 우리가 알고있는 오퍼레이터와 조합하여 찾기 명령어를 수행할 수 있다. 사실 이 부분은 활용도가 그렇게 높지는 않으므로 이렇게도 가능하구나라는 점만 기억하고 가도 좋다.

  • [c, d, v] + [/{찾을 문자열}, ?{찾을 문자열}, n, N]

대괄호는 대괄호 안 요소 중 하나를 선택한다는 의미이다. 가령 c?{찾을문자열} 과 같이 입력하면 현재커서부터 다음 '찾을 문자열' 까지 삭제하고 삽입모드로 진입할 것이다. 또한, v 이후 nN 을 활용하여 선택영역(블록)을 지정할 수도 있다. (사실 이렇게 사용하는 경우는 거의 없다) 블록을 지정하는 모습을 한번 스크린샷으로 보고 넘어가보자.

찾기도 모션이다. 찾기 명령어로 오퍼레이터(여기서는 v)와 함께 영역을 지정(Visual Mode)할 수도 있다.

Vim 찾기에서 정규식 활용하기

Vim 정규식으로 원하는 문자열 찾기

보통 CLI 찾기류 명령어는 정규식을 기본적으로 지원한다. 마찬가지로 Vim 에서도 리눅스의 명령어와 비슷한 형식으로 문자열을 지정할 수 있다. 정규식을 자세히 논하는 것은 이 포스팅이 다루는 범위를 벗어나므로, 간단히 숫자2개로 이루어진 문자열을 찾아보도록 하자. 이를 나타내는 정규식은 [0-9]{2} 이다. / 명령어 이후 해당 정규식을 입력하여 원하는 문자열을 찾아갈 수 있다. 다음 스크린샷을 보자.

Vim 의 찾기 명령의 '찾을 문자열'은 기본적으로 정규식이다.

\ - Vim 찾기 예약문자 Escaping

Vim 찾기는 기본적으로 정규식을 입력받도록 되어있기 때문에, 만약 정규식의 예약어인 [, ], * 등을 문자가 포함된 문자열을 찾기 위해서는 escaping 을 해주어야 한다. 그대로 정규식의 escaping 을 활용해주면 되겠다. \ 키를 활용한다. 여기서는 [] 를 찾고자 하고 이를 찾기 위해 입력해야 하는 정규식은 다음과 같다. /\[\]

 


찾기는 매우 자주 쓰이는 기능이다. / 키와 ? 키로 찾기가 가능하다는 것과, n, N 으로 이전에 찾은 내용을 순회하며 탐색할 수 있음을 알아보았다. 보통 일반적으로 널리 알려진 IDE 를 사용한다면, IDE 에서 제공하는 찾기 기능을 활용하는 것도 나쁘지 않다. 다만, 다음 포스팅에서 다룰 '마이크로 매크로'기능과 찾기 기능을 조합하면 흡사 '찾아 바꾸기' 기능처럼 활용이 가능한데, 이 조합 또한 만만치 않게 강한 기능이다.

그럼 다음 포스팅에서는 Vim 의 꽃이라고 부를 수 있는 '마이크로 매크로'에 대해서 알아본다.

반응형

Designed by JB FACTORY