Vim 에디터 명령어 정리
Vi/Vim
서버에서 파일을 편집하기 위해 Vim 에디터를 사용할 일이 많은데, 제가 사용하는 설정과 자주 쓰는 명령어를 정리합니다.
입력 모드 (Insert Mode)
i현재 커서에서 편집Shift + i현재 줄의 처음으로 커서를 옮긴 후 편집
s현재 커서 한 글자 삭제 후 바로 입력 모드Shift + s현재 줄 삭제 후 바로 입력 모드
a다음 칸으로 커서를 옮긴 후 편집Shift + a현재 줄의 끝으로 커서를 옮긴 후 편집
o다음 줄로 커서를 옮긴 후 편집Shift + o이전 줄로 커서를 옮긴 후 편집
마지막 행 모드 (Last Line Mode)
Last Line Command (:)
:q종료:q!강제 종료:w저장:%s/old/new/gi문자열 교체 (old -> new)g옵션을 빼면 해당 줄의 첫 번째 문자열만 교체
:!명령어 실행:!ls현재 디렉토리 파일 목록 출력:!pwd현재 디렉토리 경로 출력:!date현재 시간 출력
:tabnew [file]새로운 탭 열기 (file이 없으면 빈 탭)- 실제로는 에디터 밖에서도 사용할 수 있는 tmux나 terminal 자체 기능을 활용하는 편입니다.
gt다음 탭으로 이동하기gT이전 탭으로 이동하기
Search mode (/, ?)
/regex-pattern(?regex-pattern) 검색n다음 단어 (?는 반대)N이전 단어 (?는 반대)
명령 모드 (Command Mode)
u- undocontrol + r- redo.- 이전 명령 다시 실행
이동
hjkl좌하상우 이동Control + b이전 페이지로 이동Control + f다음 페이지로 이동Control + u이전 half page로 이동Control + d다음 half page로 이동gg문서 맨 앞으로 이동G문서 맨 뒤로 이동^현재 줄 앞으로 이동$현재 줄 끝으로 이동
간단한 편집
y복사 (yank)p붙여넣기>들여쓰기<내어쓰기Shift + j현재 줄의 끝과 다음 줄의 앞부분을 합칩니다.
삭제
r현재 커서 한 글자 교체(replace)x현재 커서 한 글자 삭제 (delete)Shift + x현재 커서 앞에 한 글자 삭제 (backspace):1,.d첫 번째 줄부터 현재 커서까지 삭제 (LLM):5,10d5번 줄부터 10번 줄까지 삭제 (LLM)dd현재 줄 삭제 (이후 p를 통해 삭제한 줄을 붙여넣을 수 있습니다)- 이동키와 조합해 삭제할 수도 있다.
5dd현재 줄 포함 아래로 5줄 삭제dgg현재 커서에서 첫 줄까지 삭제dG현재 커서에서 마지막 줄까지 삭제d$현재 커서에서 현재 줄 마지막 단어까지 삭제d^현재 커서에서 현재 줄 첫 단어까지 삭제dw현재 커서에서 현재 단어까지 삭제
비주얼 모드(visual mode)
v비주얼 모드shift + v비주얼 라인Ctrl + v비주얼 블록- 비주얼 블록 모드에서
Shift + i를 누르면 블록의 첫 줄에 커서가 위치하고, 입력 모드로 전환됩니다. - 입력을 마치고
ESC를 누르면 블록의 모든 줄에 입력한 내용이 삽입됩니다. (여러 줄을 주석 처리할 때 유용)
- 비주얼 블록 모드에서
화면 분할
- 탭 기능과 동일하게 터미널 자체 기능을 선호하는 편입니다.
Control + w+shorizontal splitnewhorizontal split한 후 새로운 창 생성
Control + w+vvertical splitvsvertical split한 후 현재 창 복제
Control + w+방향키분할된 창 간 이동Control + w+>창 폭 늘리기Control + w+<창 폭 줄이기Control + w++창 높이 늘리기Control + w+-창 높이 줄이기Control + w+=창 폭, 높이 원래 상태로Control + w+oonly one window
설정 (.vimrc)
제가 사용하는 설정 파일(~/.vimrc)입니다.
" ~/.vimrc
" 이것은 주석
syntax on
set showcmd
set statusline+=%F::%l,%c
set showmatch
set ignorecase
set smartcase
set incsearch
set autowrite
set ruler
set autoindent
set cindent
set shiftwidth=2
set tabstop=2
set expandtab
set laststatus=2
set backspace=indent,eol,start
set showmode
set hls
set colorcolumn=80
set ff=unix
set fileencodings=utf8
set viminfo='50,<1000
"set history=1000
au FileType make setlocal noexpandtab
highlight TailingWhitespace ctermbg=red guibg=red
set cul
set background=dark
set nowrapscan
set visualbell
set tenc=utf-8
syntax구문강조 사용showcmd명령어 입력시 상태표시줄에 보여줌statusline+=%F::%l,%c상태표시줄에 파일명, 줄, 컬럼 표시showmatch괄호 매칭 보여줌ignorecase검색시 대소문자 무시smartcase검색어에 대문자가 포함되어 있으면 대소문자 구분incsearch검색어 입력시 점진적 검색autowrite저장하지 않은 파일을 끝내기 전에 자동으로 저장ruler화면 우측 하단에 현재 커서의 위치(줄,칸) 표시autoindent자동 들여쓰기cindentC언어 자동 들여쓰기shiftwidth=2들여쓰기 2칸tabstop=2탭을 2칸으로expandtab탭을 스페이스로 대체laststatus=2상태표시줄 항상 표시backspace=indent,eol,start백스페이스로 들여쓰기, 줄 끝, 줄 시작 삭제showmode현재 모드 표시hls검색어 하이라이팅colorcolumn=8080칸에 세로줄 표시ff=unix파일 포맷을 유닉스로fileencodings=utf8파일 인코딩viminfo='50,<1000최근 50개의 명령어 기억history=1000vi 편집기록 기억갯수.viminfo에 기록au FileType make setlocal noexpandtabmakefile에서 탭을 스페이스로 대체하지 않음highlight TailingWhitespace ctermbg=red guibg=red끝에 공백이 있는 경우 빨간색으로 표시cul현재 커서가 있는 줄 강조nowrapscan검색시 문서 끝에서 처음으로 이동하지 않음visualbell경고음 대신 화면 깜빡임tenc=utf-8터미널 인코딩을 UTF-8로

플러그인
Vim에서 플러그인은 일반적으로 3rd-party 플러그인 매니저를 사용해서 관리합니다. 대표적으로 vim-plug, Vundle, Pathogen 등이 사용됩니다. Neovim을 사용한다면 lazy.nvim과 같은 Neovim 전용 플러그인 매니저도 있습니다.
여기서는 가장 널리 쓰이고 간단한 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')
" The default plugin directory will be as follows:
" - Vim (Linux/macOS): '~/.vim/plugged'
" - Vim (Windows): '~/vimfiles/plugged'
" - Neovim (Linux/macOS/Windows): stdpath('data') . '/plugged'
" You can specify a custom plugin directory by passing it as the argument
" - e.g. `call plug#begin('~/.vim/plugged')`
" - Avoid using standard Vim directory names like 'plugin'
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
Plug 'scrooloose/syntastic'
Plug 'vim-airline/vim-airline'
Plug 'airblade/vim-gitgutter' "GitGutterToggle
Plug 'scrooloose/nerdtree'
Plug 'tpope/vim-fugitive'
call plug#end()
Vim 데이터에서 아래 명령어를 통해 플러그인을 설치합니다.
:source %
:PlugInstall
번거롭다면 유명한 vimrc를 가져와서 사용해도 됩니다. 대표적으로 amix/vimrc가 있습니다. (플러그인 매니저로 Pathogen을 사용)
더 읽을 거리
- Vim Documentation
- Vim, 두 가지 관점 | 기계인간 John Grib
최종 수정: 2025-03-27