vi 명령어 정리 – 가장 많이 쓰이는 명령어 기초 + 중급

By: master

vi 명령어 정리 는 리눅스 서버를 다룰 때 어느 정도 필수적으로 알아야만 합니다. 리눅스 서버를 다루다 보면 마주하게 되는 가장 강력한 텍스트 편집기 중 하나가 바로 vi 또는 vim입니다.
vi는 가볍고 빠르며, 단축키 기반으로 작업 효율을 극대화할 수 있는 편집기입니다.

하지만 처음 접하면 생소한 명령어들과 모드 개념 때문에 사용하기 어렵게 느껴질 수 있는데요,
이 글에서는 처음 vi를 배우는 분들부터 실무에서 효율적으로 쓰고 싶은 분들까지 꼭 알아야 할 vi 명령어 정리 를 했습니다.
또한, 작업 환경을 쾌적하게 만들어줄 vi 설정 방법도 함께 소개합니다.

vi 명령어 정리 이미지

🔧 vi 편집 환경 설정하기

vi는 기본적으로 최소한의 설정만 활성화돼 있어, 편집 환경을 직접 구성해주는 것이 좋습니다.

sudo vi /etc/vim/vimrc

✅ 많이 사용하는 Vim 설정 목록

1. 📜 기본 인터페이스 개선

set number              " 줄 번호 표시
set relativenumber      " 현재 줄은 0, 위/아래는 상대 번호 표시
set cursorline          " 현재 줄 하이라이팅
set showcmd             " 입력 중인 명령 표시
set showmode            " 현재 모드 표시 (입력/명령)
set ruler               " 상태 표시줄에 커서 위치 표시
set laststatus=2        " 항상 상태줄 표시

2. ⌨️ 입력 및 들여쓰기 관련 설정

set expandtab           " Tab을 공백으로 치환
set tabstop=4           " 탭 간격 (공백 기준)
set shiftwidth=4        " 자동 들여쓰기 폭
set smartindent         " 스마트 들여쓰기
set autoindent          " 자동 들여쓰기
set backspace=indent,eol,start " 백스페이스 키 개선

3. 🌐 파일 인코딩 관련 설정

set encoding=utf-8
set fileencodings=utf-8,euc-kr,cp949

4. 📝 검색 기능 개선

set ignorecase          " 검색 시 대소문자 무시
set smartcase           " 대문자 포함 시 대소문자 구분
set hlsearch            " 검색 결과 하이라이트
set incsearch           " 검색 중 실시간 하이라이트

5. 🖱️ 편의성 향상

set mouse=a             " 마우스 전부 활성화
set clipboard=unnamed   " 시스템 클립보드 연동 (복사/붙여넣기)
set history=1000        " 명령 히스토리 저장 개수
set autoread            " 외부에서 변경된 파일 자동 반영

6. 💡 기타 꿀팁 설정

syntax on               " 문법 강조
filetype plugin indent on   " 파일 유형별 자동 설정 활성화
set wrap                " 줄 바꿈 허용
set scrolloff=5         " 커서 상하단 여백 확보
set wildmenu            " 탭 자동완성 UI 개선
set timeoutlen=500      " 키맵 입력 대기 시간 단축

파일 맨 아래에 다음을 추가하세요:

예시: 추천 .vimrc 통합 설정

set number
set relativenumber
set cursorline
set showcmd
set showmode
set ruler
set laststatus=2

set tabstop=4
set shiftwidth=4
set expandtab
set smartindent
set autoindent

set encoding=utf-8
set fileencodings=utf-8,euc-kr,cp949

set ignorecase
set smartcase
set hlsearch
set incsearch

set mouse=a
set clipboard=unnamed
set history=1000
set autoread

syntax on
filetype plugin indent on
set scrolloff=5
set wildmenu

✍️ vi 모드 개념 (기초 개념 정리)

vi는 세 가지 모드를 중심으로 작동합니다.

모드 이름설명
명령 모드기본 모드, 키 입력이 명령으로 인식됨 (복사, 삭제 등)
입력 모드텍스트 입력 가능 (i, a 등으로 진입)
명령행 모드: 로 진입, 저장, 종료, 검색 등 실행

✅ vi 기본 명령어 (자주 사용하는 필수 기능)

📌 입력 관련

기능명령어
커서 앞에 입력i
커서 뒤에 입력a
줄 맨 앞에 입력I
줄 맨 뒤에 입력A

🔙 실행 취소 & 재실행

명령어기능
u마지막 작업 취소
U현재 줄 전체 취소
Ctrl + r되돌리기 취소 (다시 실행)

✂️ 삭제 & 복사 & 붙여넣기

명령어기능
dd현재 줄 삭제 (버퍼에 복사됨)
3dd현재부터 3줄 삭제
dw현재 커서부터 한 단어 삭제
d$현재 커서부터 줄 끝까지 삭제
x커서 위치의 한 글자 삭제
r커서 위치의 한 글자 대체
yy현재 줄 복사
3yy현재부터 3줄 복사
p복사한 내용 붙여넣기 (다음 줄)
P복사한 내용 붙여넣기 (이전 줄)

🔍 커서 이동 관련 정리표

구분명령어설명
기본 문자 단위 이동h왼쪽으로 한 글자
l오른쪽으로 한 글자
j아래로 한 줄
k위로 한 줄
단어/문자 단위 이동w다음 단어의 시작으로 이동
W공백 기준 다음 단어로 이동 (구두점 무시)
b이전 단어의 시작으로 이동
B공백 기준 이전 단어로 이동
e현재 단어의 끝으로 이동
E공백 기준 현재 단어의 끝으로 이동
줄 내 이동0현재 줄의 맨 앞으로 이동 (줄 번호 바로 뒤)
^현재 줄의 첫 번째 문자 위치로 이동
$현재 줄의 맨 끝으로 이동
문장 단위 이동(이전 문장의 시작으로 이동
)다음 문장의 시작으로 이동
문단 단위 이동{이전 문단의 시작으로 이동
}다음 문단의 시작으로 이동
화면 기준 이동H화면 최상단 줄로 이동 (Home)
M화면 가운데 줄로 이동 (Middle)
L화면 최하단 줄로 이동 (Last)
파일 전체 기준 이동gg파일 처음으로 이동 (줄 번호 1)
G파일 끝으로 이동
nGn번째 줄로 이동 (:10과 같음)
:n명령행에서 n번째 줄로 이동
함수/블록 기준 이동[[이전 함수/블록의 시작
]]다음 함수/블록의 시작

🔍 vi / vim 검색 & 치환 명령어 요약표

분류명령어설명
🔎 검색/단어커서 아래 방향으로 단어 검색
?단어커서 위 방향으로 단어 검색
n다음 검색 결과로 이동
N이전 검색 결과로 이동

🔁 단일 치환 (단어 하나만 바꾸기)

명령어설명
rX커서 위치의 한 글자를 X로 교체
cw커서 위치의 단어를 삭제 후 입력 모드 전환

예시:
cwNewWord → 현재 단어를 NewWord로 바꿈


🧼 전역 치환 (문서 전체)

명령어설명
:%s/찾을말/바꿀말/첫 번째만 바꿈 (한 줄에 하나)
:%s/찾을말/바꿀말/g전체 문서에서 모든 찾을말을 바꿈
:10,20s/a/b/g10~20줄에서 ab로 전부 바꿈
:%s/old/new/gc바꾸기 전 하나하나 확인 (confirm)
:%s/word/WORD/gi대소문자 무시하고 전체 바꿈

⚙️ 치환 옵션 요약

옵션설명
g한 줄에 중복된 것도 모두 바꿈 (global)
c치환 전에 확인(prompt)
i대소문자 무시하고 검색 및 치환

✨ 예제 모음

명령어결과
:%s/foo/bar/g문서 전체의 foobar로 모두 치환
:.,$s/error/warning/g현재 줄부터 마지막 줄까지 errorwarning
:1,10s/hello/hi/gci1~10줄 범위에서 hellohi, 대소문자 무시 + 확인

🔄 되돌리기

명령어설명
u최근 작업 실행 취소 (undo)
Ctrl + rundo 되돌리기 (redo)

vi 저장 및 종료 명령어 완전 정리

명령어설명
:w파일 저장 (write) – 저장만 하고 종료하지 않음
:q종료 (quit) – 변경사항이 없을 때만 종료 가능
:wq저장 후 종료 (write + quit)
:x:wq와 동일 (변경 사항 있을 때만 저장하고 종료)
:q!강제 종료 – 저장하지 않고 종료 (변경 사항 무시)
:wq!강제 저장 후 종료 (쓰기 권한 없을 때 유용)
ZZ저장 후 종료 (:wq 단축키처럼 사용, 명령모드에서 Shift + ZZ)
:w 파일명다른 이름으로 저장 (save as)
:f 파일명현재 열려 있는 파일의 이름 변경
:e!마지막 저장 이후의 모든 변경사항 되돌리기 (복원)

🧱 블록 설정 & 자동 정렬

기능명령어
블럭 지정 시작Ctrl + v
자동 코드 정렬gg=G (파일 전체 정렬)
선택 정렬블럭 선택 후 = 입력

코드 자동 정렬 1: gg=G 순서대로 입력

코드 자동 정렬 2: gg(맨앞줄로 이동) → ctrl + v(블럭지정) → G(맨뒷줄로 이동) → =


💡 추가로 알아두면 유용한 고급 기능

기능명령어
파일 저장:w
종료:q
저장 후 종료:wq 또는 ZZ
저장 없이 강제 종료:q!
다른 이름으로 저장:w 파일명
줄 번호 표시:set number
줄 번호 숨기기:set nonumber
탭을 공백으로 표시:set list

화면 표시 & 편집 보조 설정

명령어기능
:syntax on문법 강조 활성화
:set cursorline현재 줄 강조
:set paste붙여넣기 시 자동 들여쓰기 해제
:set nopaste붙여넣기 해제 모드 종료
:set hlsearch검색 결과 하이라이트
:set nohlsearch검색 결과 하이라이트 제거

🧠 Tip: vi 사용 시 흔한 실수

  • 입력 모드에서 명령어가 안 먹는 경우: Esc 눌러 명령 모드로 전환해야 합니다.
  • 붙여넣기 후 들여쓰기가 깨질 때: :set paste 활성화 후 붙여넣기 → 다시 :set nopaste 추천
  • 검색 후 다른 방향으로 이동하려면?: n(다음), N(이전) 잘 활용하세요!

🧾 마무리 정리

항목요약
설정vimrc에 기본 설정 추가
모드명령 / 입력 / 명령행 3가지
필수 명령어입력, 저장, 복사, 붙여넣기, 검색, 이동 등
고급 기능블록 지정, 자동 정렬, 파일 저장/종료 등

🎯 결론

vi는 처음엔 어렵지만, 자주 쓰는 명령어만 손에 익혀도 생산성을 획기적으로 높일 수 있는 도구입니다.
이 글에서 소개한 vi 필수 명령어들을 반복적으로 익히고, .vimrc 설정까지 잘 구성하면
리눅스 환경에서 더욱 효율적으로 작업할 수 있게 될 것입니다.

💡 앞으로는 vim + 플러그인 사용법, .vimrc 고급 설정 가이드도 다뤄볼 예정이니 즐겨찾기 해두시면 좋습니다!

vim 관련 모든 명령어가 나오는 사이트

https://www.vim.org/docs.php

https://vimhelp.org

https://vimhelp.org/index.txt.html

도움이 될 수 있는 연관글

Leave a Comment