vim : 단어 및 선택 영역을 둘러싸기

Surround.vim이라는 멋진 플러그인이 있기는 하지만, 개인적으로는 vimrc에 오랫동안 넣고 쓰던 코드

기본원리

기본원리는 매우 간단한데, 괄호 등으로 감싸고자 하는 단어를 선택영역으로 만든 다음, 선택 영역을 해제하고, 이 영역의 마지막과 끝 영역으로 이동해서 괄호짝을 삽입해주면 된다.

  1. viw: 현재 단어 선택
  2. <esc>: 단어 선택 취소
  3. \>`: 마지막 선택영역의 끝으로 이동
  4. a)<esc>: 선택영역 뒤에 닫는 괄호 추가
  5. \<`: 선택영역의 시작지점으로 이동
  6. i(<esc>: 여는 괄호 삽입
  7. \>ll`: 두 글자가 추가되었으므로 다시 단어 끝부분을 이동하여 오른쪽으로 두 칸 이동

키 맵핑

이를 vimrc 에 키 맵핑으로 정의하면 다음과 같다.

nnoremap <leader>) viw<esc>`>a)<esc>`<i(<esc>`>ll

만약 비주얼모드에서 선택영역을 만들고 그 영역을 둘러싸기 위해서는 다음과 같이 맵핑을 만들면 된다.

vnoremap <leader>) <esc>`>a)<esc>`<i(<esc>`>ll

열고 닫는 괄호문자들의 짝을 바꿔주면 중괄호, 대괄호나 마크 다운용 표시들을 쉽게 만들 수 있다.

html 태그 감싸기

html 태그로 감싸는 기능을 만드려면 먼저 태그로 사용할 단어를 입력 받아야 하고, 시작태그를 입력 받았으면 끝 태그로 변환이 필요하기에 함수를 사용하기로 한다. 해당 함수는 gist에서 확인하시라.