Wireframe

Vim – 명령 입력 모드의 편집 기능

vim을 사용하다보면 입력모드 만큼이나 명령모드도 많이 쓰게 된다. 오늘은 명령모드 혹은 Ex모드에서 알아두면 유용할 몇 가지 팁을 소개한다.

다음은 명령줄에서 명령을 입력할 때 사용할 수 있는 기본적인 편집키이다.

명령줄 자동완성

vim의 명령줄도 기본적으로 별도의 설정 없이도 <Tab> 키를 사용하여 문맥에 맞는 자동완성을 사용할 수 있다.

명령줄에서 명령의 일부를 입력한 상태에서 <Tab> 키를 누르면 입력한 내용으로 시작하는 명령이나 설정 이름등이 자동 완성된다. 만약 매치하는 내용이 2개 이상이라면 <Tab> 키를 누를 때마다 매치 후보가 변경되면서 입력된다. 또 명령 모드에서만 가능한 기능으로, <C-D>를 눌러서 가능한 전체 후보를 확인할 수 있다.

'wildmenu' 옵션을 설정하여 활성화하였다면, 탭 키를 눌러서 자동 완성을 시작할 때 매치 가능한 다른 후보들이 명령줄 위쪽으로 표시되어 미리 찾아 볼 수도 있다. 이 상태에서는 입력모드와 같이 이전/이후 후보를 이동할 수도 있다.

재밌는 점은 / 키를 통해 검색을 수행할 때, 검색 패턴을 입력하는 영역 역시 커맨드 라인이라는 점이며, 이 경우에는 다음과 같은 키가 추가적으로 지원된다.

<C-L>의 경우가 재미있는데, 본문에 match란 단어가 있을 때, /ma까지 입력한 후 Ctrl+L을 누르면 t, c, h로 입력된 내용이 점점 매칭되는 패턴으로 확장된다.

명령줄용 키 맵핑

cmap을 사용하면 명령 모드에서 명령 입력줄에서 편집할 때 사용될 키맵을 작성할 수 있다. 많이 쓰는 키맵 설정으로는 (개인적으로 즐겨쓰는) 입력모드와 마찬가지로 jk를 눌러서 빠져 나온다던지, 혹은 <expr> 키 맵을 사용해서 특정한 변수나 함수 실행 결과를 바로 삽입하는 경우도 있다. 아래 예는 명령 모드에서 jk를 입력했을 때 다시 일반 모드로 빠져나오게 하는 것이다.

:cnoremap jk <Esc>

고급 편집 – 레지스터

명령 모드에서 명령줄을 입력하는 중에 <C-R>을 누른 후 레지스터 이름을 입력하면 해당 레지스터의 내용을 명령줄에 입력할 수 있다.

<C-R>= 를 누르면 입력 프롬프트가 ‘=’ 으로 표시되는데, 여기에 표현식을 작성하여 그 결과를 명령줄에 삽입할 수 있다. 여기서는 간단한 연산외에도 함수를 호출할 수 있다.

그외에 <C-R> 을 누른 후 다음 키를 눌러서 입력을 확장할 수 있다. 이게 나름 유용하다.

Exit mobile version