DaleSchool

플러그인 맛보기

입문15분

학습 목표

  • 플러그인 매니저(vim-plug)를 설치할 수 있다
  • 실용적인 플러그인 2-3개를 설치하고 사용할 수 있다
  • 플러그인 설정을 vimrc에 추가할 수 있다

Vim은 그 자체로도 강력하지만, 플러그인을 추가하면 생산성이 크게 올라가요. 이번 레슨에서는 플러그인 매니저를 설치하고, 실무에서 가장 많이 쓰는 플러그인 세 가지를 직접 써볼게요.

동작하는 코드

먼저 플러그인 매니저 vim-plug을 설치해요. 터미널에서 이 한 줄만 실행하면 돼요.

curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

설치가 끝나면 ~/.vimrc에 플러그인 블록을 추가해요.

call plug#begin('~/.vim/plugged')

Plug 'tpope/vim-surround'
Plug 'tpope/vim-commentary'
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'

call plug#end()

Vim을 열고 :PlugInstall을 실행하면 플러그인이 자동으로 다운로드돼요.

직접 수정하기

vim-surround — 감싸기의 달인

따옴표, 괄호, 태그를 자유자재로 바꿀 수 있어요.

" 큰따옴표를 작은따옴표로 바꾸기
cs"'          →  "hello" → 'hello'

" 감싸기 삭제
ds"           →  "hello" → hello

" 단어를 큰따옴표로 감싸기
ysiw"         →  hello → "hello"

" 선택 영역을 괄호로 감싸기 (Visual 모드에서)
S)            →  hello → (hello)

아무 파일이나 열어서 cs"', ds", ysiw"를 연습해 보세요.

vim-commentary — 주석 토글

" 현재 줄 주석 토글
gcc

" 3줄 주석 토글
3gcc

" 모션으로 주석 (현재 문단)
gcap

" Visual 모드에서 선택 후 주석
gc

파일 타입에 따라 주석 스타일이 자동으로 바뀌어요. .js에서는 //, .py에서는 #을 사용해요.

fzf.vim — 퍼지 검색

프로젝트에서 파일이나 내용을 빠르게 찾을 수 있어요.

" 파일 이름으로 검색
:Files

" 열린 버퍼 검색
:Buffers

" 파일 내용 검색 (ripgrep 필요)
:Rg 검색어

~/.vimrc에 단축키를 추가하면 더 편해요.

nnoremap <leader>f :Files<CR>
nnoremap <leader>b :Buffers<CR>
nnoremap <leader>r :Rg<CR>

"왜?"

플러그인 매니저가 왜 필요할까요? 플러그인을 수동으로 관리하면 설치, 업데이트, 삭제가 번거로워요. vim-plug은 이 과정을 명령어 하나로 해결해 줘요.

명령어역할
:PlugInstall새 플러그인 설치
:PlugUpdate설치된 플러그인 업데이트
:PlugCleanvimrc에서 제거한 플러그인 삭제
:PlugStatus플러그인 상태 확인

플러그인은 필요한 것만 최소한으로 설치하는 게 좋아요. 너무 많으면 Vim 시작 속도가 느려지고, 키 충돌이 생길 수 있어요.

심화 학습

플러그인을 고르는 기준

  • GitHub 스타 수와 최근 커밋 날짜를 확인하세요.
  • README가 잘 정리된 플러그인이 보통 품질도 좋아요.
  • VimAwesome에서 카테고리별로 인기 플러그인을 찾을 수 있어요.

세 가지 플러그인 실습

  1. vim-plug을 설치하고 위의 세 플러그인을 ~/.vimrc에 추가하세요.
  2. :PlugInstall로 설치하세요.
  3. 아무 코드 파일을 열고 다음을 수행하세요.
    • ysiw" — 단어를 따옴표로 감싸기
    • gcc — 줄 주석 토글
    • :Files — 파일 검색
  4. ~/.vimrc에 fzf 단축키(<leader>f, <leader>b)를 추가하세요.

Vim에서 cs"'는 어떤 동작을 하나요?