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

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

기본원리

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

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

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

VimAwesom : vim 플러그인을 쉽게 찾기

vim 플러그인을 분류별로 찾아보고, 검색해 볼 수 있는 사이트인 vim awesome입니다. 아직 등록된 플러그인의 양이 많지는 않지만 github의 ReadMe 페이지를 바로 확인할 수 있고, 설치 방법도 소상히 알려줍니다.

:g (vim)

:g[lobal]

사용법 : :[range]g[lobal]/{pattern}/[cmd]

주어진 범위에 대해 패턴에 매칭하는 줄에 대해서만 주어진 명령을 실행한다.

사용예

빈줄을 모두 삭제하는 명령

:%g/^$/normal dd

이때 명령은 명령모드 명령이다. 따라서 키 시퀀스 명령을 쓰려면 normal을 사용하 면된다.

참고

반대로 패턴에 매칭되지 않는 경우에만 실행하려면 :g!를 사용한다. 이와 동치의 명령으로는 :v가 있다.

vim의 정규식 기호와 very magic 모드

vim의 문자열 검색, 치환 기능은 패턴 매칭에 의한 것이며, 이 패턴 매칭은 정규식에 기반을 두고 있다. 그런데 정규식 문법을 조금 알고 있는 상태에서 vim의 정규식을 사용하면 깊은 빡침을 느끼거나 심한 멀미를 겪을 수 있다. 왜냐하면 정규식은 딱히 하나의 정해진 표준도 없거니와 기능과 편의를 위해서 여러 갈래로 나뉘어져 있고 vim에서는 상황에 따라서 서로 다른 기준을 사용해서 패턴을 파싱하기 때문이다. 예를 하나 들어보자.

(this)isnot{this}nor[this]

이런 문자열이 있다고 할 때, 괄호들을 포함한 this를 검색, 즉 (this), {this}, [this]를 검색하려면 다음의 패턴을 사용한다. vim의 정규식 기호와 very magic 모드 더보기