DaleSchool

vimrc: 나만의 설정

입문20분

학습 목표

  • .vimrc 파일의 역할과 위치를 설명할 수 있다
  • set number, set relativenumber 등 기본 옵션을 설정할 수 있다
  • map/nmap으로 키 매핑을 만들 수 있다
  • Leader 키를 설정하고 활용할 수 있다

동작하는 코드

Vim을 열 때마다 줄 번호를 켜고, 탭 크기를 설정하고, 검색 옵션을 바꾸고 있나요? .vimrc 파일에 한 번만 적어두면 Vim이 시작할 때 자동으로 적용해요.

~/.vimrc 파일을 만들어보세요.

" 줄 번호 표시
set number
set relativenumber

" 들여쓰기 설정
set tabstop=2
set shiftwidth=2
set expandtab

" 검색 설정
set ignorecase
set smartcase
set incsearch
set hlsearch

이 파일을 저장하고 Vim을 다시 열면, 설정이 자동으로 적용돼 있어요.

직접 수정하기

.vimrc부터 시작해서 한 줄씩 추가해보세요. 차에 타면 좌석과 미러를 먼저 조절하듯, Vim을 쓰기 전에 환경을 나에게 맞춰보는 거예요.

vim ~/.vimrc

아래 내용을 하나씩 추가하면서 효과를 확인해보세요.

1단계: 기본 화면 설정

set number             " 줄 번호 표시
set relativenumber     " 상대적 줄 번호 (현재 줄 기준)
set cursorline         " 현재 줄 강조
syntax on              " 문법 하이라이팅

저장(:w)한 뒤 :source %로 바로 적용해보세요.

2단계: 편집 설정

set tabstop=2          " 탭 = 2칸
set shiftwidth=2       " 자동 들여쓰기 = 2칸
set expandtab          " 탭을 스페이스로 변환
set autoindent         " 자동 들여쓰기

3단계: 검색 설정

set ignorecase         " 대소문자 무시 검색
set smartcase          " 대문자 입력하면 대소문자 구분
set incsearch          " 입력하면서 바로 검색
set hlsearch           " 검색 결과 하이라이트

4단계: 시스템 연동

set clipboard=unnamedplus  " Vim 복사 → 시스템 클립보드
set mouse=a                " 마우스 지원

5단계: Leader 키와 키 매핑

let mapleader=" "          " 스페이스바를 Leader 키로
nmap <leader>w :w<CR>      " Space+w = 저장
nmap <leader>q :q<CR>      " Space+q = 종료
nmap <leader>h :noh<CR>    " Space+h = 검색 하이라이트 끄기

매번 :w Enter를 치는 대신 Space w로 저장할 수 있어요.

"왜?"

.vimrc자동차의 시트 메모리 같은 거예요. 매번 탈 때마다 좌석 높이, 미러 각도, 핸들 위치를 조절하는 건 비효율적이에요. 한 번 설정해두면 시동을 걸 때 자동으로 맞춰지는 것처럼, .vimrc에 적어두면 Vim을 열 때 자동으로 적용돼요.

왜 빈 파일에서 시작하나요? 인터넷에서 남의 .vimrc를 통째로 복사하면 이해하지 못하는 설정이 섞여 문제가 생겨요. 한 줄씩 추가하면서 "이 설정이 뭘 바꾸는지" 직접 확인하는 게 중요해요.

Leader 키는 뭔가요? Vim의 기본 키 바인딩은 거의 모든 키를 사용해요. 새로운 단축키를 추가하려면 충돌이 생기기 쉬워요. Leader 키는 나만의 단축키 네임스페이스예요. let mapleader=" "로 스페이스바를 Leader로 설정하면, Space+w, Space+q 같은 조합을 자유롭게 만들 수 있어요.

nmap vs nnoremap: nmap은 재귀적 매핑이에요 — 매핑된 키가 또 다른 매핑을 트리거할 수 있어요. nnoremap은 비재귀적(non-recursive) 매핑이라 더 안전해요. 실제로는 nnoremap을 쓰는 것이 권장돼요. 이 레슨에서는 간결함을 위해 nmap을 사용했지만, 본인의 .vimrc에서는 nnoremap을 쓰세요.

심화 학습

유용한 추가 설정
set scrolloff=8        " 커서 위아래로 항상 8줄 여유 확보
set signcolumn=yes     " 좌측 사인 칼럼 항상 표시
set updatetime=250     " 반응 속도 향상 (기본값 4000ms)
set splitright         " 세로 분할 시 오른쪽에 새 창
set splitbelow         " 가로 분할 시 아래에 새 창
set nowrap             " 긴 줄 줄바꿈 하지 않기
set wildmenu           " 명령줄 자동완성 메뉴
:set으로 현재 설정 확인하기

.vimrc에 적지 않아도 Vim 안에서 임시로 설정을 바꿀 수 있어요.

:set number            ← 줄 번호 켜기
:set nonumber          ← 줄 번호 끄기
:set number?           ← 현재 number 설정 확인
:set number!           ← 토글 (켜져 있으면 끄고, 꺼져 있으면 켜기)
:set all               ← 모든 설정 보기

Vim 안에서 테스트해보고 마음에 드는 설정만 .vimrc에 추가하는 방식으로 작업하면 좋아요.

아래 순서대로 .vimrc를 처음부터 만들어보세요.

  1. vim ~/.vimrc로 파일을 열거나 새로 만드세요
  2. 아래 최소 설정을 입력하세요:
set number
set relativenumber
set tabstop=2
set shiftwidth=2
set expandtab
set ignorecase
set smartcase
set incsearch
set hlsearch
syntax on
let mapleader=" "
nmap <leader>w :w<CR>
nmap <leader>q :q<CR>
  1. :w로 저장하세요
  2. :source %로 바로 적용하세요
  3. 줄 번호가 나타나는지 확인하세요
  4. Space w를 눌러 Leader 키 매핑이 동작하는지 확인하세요
  5. 마음에 드는 설정을 하나 더 추가해보세요

도전: nnoremap <leader>e :e ~/.vimrc<CR> 를 추가해서 Space e.vimrc를 바로 열 수 있게 만들어보세요.

question: .vimrc 파일은 어디에 위치하나요? answers:

question: .vimrc를 수정한 후 Vim을 재시작하지 않고 적용하려면? answers:

question: Leader 키를 스페이스바로 설정하는 방법은? answers: