Surround.vim이라는 멋진 플러그인이 있기는 하지만, 개인적으로는 vimrc에 오랫동안 넣고 쓰던 코드
기본원리
기본원리는 매우 간단한데, 괄호 등으로 감싸고자 하는 단어를 선택영역으로 만든 다음, 선택 영역을 해제하고, 이 영역의 마지막과 끝 영역으로 이동해서 괄호짝을 삽입해주면 된다.
viw
: 현재 단어 선택<esc>
: 단어 선택 취소\
>`: 마지막 선택영역의 끝으로 이동a)<esc>
: 선택영역 뒤에 닫는 괄호 추가\
<`: 선택영역의 시작지점으로 이동i(<esc>
: 여는 괄호 삽입\
>ll`: 두 글자가 추가되었으므로 다시 단어 끝부분을 이동하여 오른쪽으로 두 칸 이동
키 맵핑
이를 vimrc 에 키 맵핑으로 정의하면 다음과 같다.
nnoremap <leader>) viw<esc>`>a)<esc>`<i(<esc>`>ll
만약 비주얼모드에서 선택영역을 만들고 그 영역을 둘러싸기 위해서는 다음과 같이 맵핑을 만들면 된다.
vnoremap <leader>) <esc>`>a)<esc>`<i(<esc>`>ll
열고 닫는 괄호문자들의 짝을 바꿔주면 중괄호, 대괄호나 마크 다운용 표시들을 쉽게 만들 수 있다.
html 태그 감싸기
html 태그로 감싸는 기능을 만드려면 먼저 태그로 사용할 단어를 입력 받아야 하고, 시작태그를 입력 받았으면 끝 태그로 변환이 필요하기에 함수를 사용하기로 한다. 해당 함수는 gist에서 확인하시라.