[Linux] 리눅스 vi 명령어 정리 | Vim 3가지 모드 및 비주얼 모드

vi 를 열었다가 글자가 입력되지 않거나, 빠져나오는 법을 몰라 창을 닫아 버리는 일은 서버를 처음 만지는 사람이 한 번은 겪습니다. 리눅스 vi 명령어는 명령 모드와 입력 모드가 나뉘어 있어, 지금 어느 모드에 있는지만 알면 그 뒤는 키 몇 개로 끝납니다. 이 글에서는 세 가지 모드와 모드별 명령어를 표로 정리하고, 브라우저 안의 가상 서버에서 vi 를 직접 쳐 볼 수 있게 했습니다.
AlmaLinux 9.8 에서 vi 와 vim 은 모두 vim 8.2 패키지이며, 이 글의 화면과 문구는 vim 으로 연 것입니다. 설치되어 있지 않다면 [dnf -y install vim-enhanced]로 설치합니다.
✅ vi 세 가지 모드
vi 는 모드에 따라 같은 키가 다른 일을 합니다. 파일을 열면 명령 모드로 시작하고, i 로 입력 모드에 들어가 글자를 치고, Esc 로 돌아오며, 콜론[:]으로 마지막 행 모드에 들어가 저장하고 나옵니다.
| 모드 | 들어가는 키 | 하는 일 |
|---|---|---|
| 명령 모드 | vi 를 열면 이 모드 · 다른 모드에서 Esc | 커서 이동, 삭제, 복사, 붙여넣기, 되돌리기 |
| 입력 모드 | i a I A o O | 글자 입력. 화면 아래에 [-- INSERT --] |
| 마지막 행 모드 | : | 저장·종료·치환·행 번호 설정. 화면 아래에 : 이 뜸 |
| 비주얼 모드 | v V Ctrl-v | 범위를 고른 뒤 삭제·복사·일괄 입력 |
콘솔에서 여는 방법은 세 가지입니다.
| 명령 | 설명 |
|---|---|
| vi 파일명 | 파일을 열어 명령 모드로 시작. 없는 파일이면 새로 만들고 [New] 표시 |
| vi +20 파일명 | 20행에 커서를 두고 열기 |
| view 파일명= vi -R | 읽기 전용으로 열기. 고치면 [W10] 경고, 저장하면 [E45] |
아래 가상 서버에서 [vi httpd.conf]를 치면 vi 가 열리고, 왼쪽 메뉴가 vi 안의 명령으로 바뀝니다. 칩을 누르면 그 키가 화면에 들어가며, 키보드로 직접 쳐도 됩니다.
✅ 리눅스 vi 명령어 정리
🔲 커서 이동
| 키 | 설명 |
|---|---|
| h j k l← ↓ ↑ → | 한 칸씩 이동. 방향키도 됨 |
| 0 · ^ | 행 처음(0) · 행에서 공백이 아닌 첫 글자(^) |
| $ | 행 끝 |
| w · b · e | 다음 단어 처음 · 앞 단어 처음 · 다음 단어 끝 |
| gg · G | 파일 첫 행 · 마지막 행 |
| 20G:20 과 같음 | 20행으로. 숫자를 바꿔 원하는 행으로 |
| H · M · L | 화면의 맨 위 · 가운데 · 맨 아래 행 |
| Ctrl-f · Ctrl-b | 한 화면 아래 · 위 |
| Ctrl-d · Ctrl-u | 반 화면 아래 · 위 |
🔲 입력 모드 진입
어느 키로 들어가든 입력이 끝나면 Esc 를 누릅니다. cw·cc·C·s 는 지우면서 바로 입력 모드로 들어가므로, 단어나 행을 고칠 때 x 와 i 를 따로 누르는 것보다 빠릅니다.
| 키 | 설명 |
|---|---|
| i · a | 커서 앞(i) · 커서 뒤(a)에 입력 시작 |
| I · A | 행 처음(I) · 행 끝(A)에 입력 시작 |
| o · O | 아래(o) · 위(O)에 빈 행을 만들고 입력 시작 |
| cw | 커서부터 단어 끝까지 지우고 입력 시작 |
| cc | 행 전체를 지우고 입력 시작 |
| C | 커서부터 행 끝까지 지우고 입력 시작 |
| s | 글자 하나를 지우고 입력 시작 |
| Esc | 입력을 끝내고 명령 모드로 |
🔲 삭제·수정
d 뒤에 이동 키를 붙이면 그 범위가 지워집니다. dw 는 단어, dd 는 행, dG 는 파일 끝까지이고, 앞에 숫자를 붙이면 그만큼 반복됩니다.
| 키 | 설명 |
|---|---|
| x · X | 커서 글자(x) · 커서 앞 글자(X) 삭제. 3x 는 세 글자 |
| dw | 커서부터 단어 끝까지 삭제 |
| dd | 행 삭제. 3dd 는 세 행 |
| D= d$ | 커서부터 행 끝까지 삭제 |
| d0 | 행 처음부터 커서 앞까지 삭제 |
| dG | 현재 행부터 파일 끝까지 삭제 |
| :6d · :6,10d | 6행 삭제 · 6~10행 삭제 |
| J | 아래 행을 현재 행 끝에 붙임 |
| r | 커서 글자를 다음에 치는 글자로 바꿈 |
| ~ | 대소문자 바꿈 |
| >> · << | 행 들여쓰기 · 내어쓰기 |
🔲 복사·붙여넣기·되돌리기
삭제한 것도 복사한 것처럼 p 로 붙여넣을 수 있어, dd 와 p 를 이어 누르면 행이 아래로 옮겨집니다. u 는 여러 단계를 거슬러 올라가며, Ctrl-r 로 되돌린 것을 다시 실행합니다.
| 키 | 설명 |
|---|---|
| yy | 행 복사. 3yy 는 세 행 |
| yw | 커서부터 단어 끝까지 복사 |
| p · P | 복사한 것을 아래(p) · 위(P)에 붙여넣기. 글자 단위 복사였으면 커서 뒤 · 앞 |
| :1 co 7:1 t 7 과 같음 | 1행을 복사해 7행 아래에 |
| :1,7 co 8 | 1~7행을 복사해 8행 아래에 |
| :1 m 8 | 1행을 8행 아래로 이동 |
| u | 되돌리기. 여러 번 누르면 계속 되돌아감 |
| Ctrl-r | 되돌린 것을 다시 실행 |
| . | 마지막 변경을 반복 |
🔲 검색·치환
치환은 마지막 행 모드에서 합니다. 범위를 주지 않으면 현재 행만, [%]를 붙이면 파일 전체이며, 끝에 g 가 없으면 행마다 첫 번째 것만 바뀝니다.
| 키 | 설명 |
|---|---|
| /문자열 | 커서 아래쪽으로 검색. 끝에 닿으면 처음부터 이어서 [search hit BOTTOM, continuing at TOP] |
| ?문자열 | 커서 위쪽으로 검색 |
| n · N | 같은 방향으로 다음 결과(n) · 반대 방향(N) |
| * | 커서가 있는 단어를 아래쪽으로 검색 |
| :s/old/new/ | 현재 행의 첫 old 를 new 로 |
| :s/old/new/g | 현재 행의 모든 old 를 new 로 |
| :%s/old/new/g | 파일 전체의 모든 old 를 new 로 |
| :10,20s/old/new/g | 10~20행의 모든 old 를 new 로 |
| :%s/old/new/gc | 하나씩 물어보며 바꿈(y 바꿈 · n 건너뜀 · a 전부 · q 그만) |
🔲 저장·종료·행 번호
| 키 | 설명 |
|---|---|
| :w | 저장. 끝나면 [36L, 1094B written] |
| :w 파일명 | 다른 이름으로 저장. 원래 파일은 그대로 |
| :wq= :x = ZZ | 저장하고 종료 |
| :q | 종료. 고친 것이 있으면 [E37: No write since last change] |
| :q! | 저장하지 않고 종료 |
| :set nu · :set nonu | 행 번호 표시 · 숨김 |
✅ Vim 비주얼 블록 모드로 열 일괄 주석
여러 행 앞에 같은 글자를 넣을 때는 행마다 i 를 누르는 대신 비주얼 블록 모드를 씁니다. 명령 모드에서 v 는 글자 단위, Shift-v 는 행 단위, Ctrl-v 는 열 단위로 범위를 고릅니다.
설정 파일의 한 덩어리를 통째로 주석 처리하는 순서입니다. 첫 행 첫 글자에 커서를 두고 Ctrl-v 를 누른 뒤 j 로 내려가며 행을 고르고, I 를 누르고 # 을 친 다음 Esc 를 누릅니다.
![[Linux] 리눅스 vi 명령어 정리 | Vim 3가지 모드 및 비주얼 모드 5 vim 비주얼 블록 실행](https://uknew.co/storage/2024/01/vim-%EB%B9%84%EC%A3%BC%EC%96%BC-%EB%B8%94%EB%A1%9D-%EC%8B%A4%ED%96%89.png)
![[Linux] 리눅스 vi 명령어 정리 | Vim 3가지 모드 및 비주얼 모드 7 vim 비주얼 블록 편집모드에서 입력](https://uknew.co/storage/2024/01/vim-%EB%B9%84%EC%A3%BC%EC%96%BC-%EB%B8%94%EB%A1%9D-%ED%8E%B8%EC%A7%91%EB%AA%A8%EB%93%9C%EC%97%90%EC%84%9C-%EC%9E%85%EB%A0%A5.png)
![[Linux] 리눅스 vi 명령어 정리 | Vim 3가지 모드 및 비주얼 모드 8 vim 비주얼 블록모드 열치환 완료](https://uknew.co/storage/2024/01/vim-%EB%B9%84%EC%A3%BC%EC%96%BC-%EB%B8%94%EB%A1%9D%EB%AA%A8%EB%93%9C-%EC%97%B4%EC%B9%98%ED%99%98-%EC%99%84%EB%A3%8C.png)
주석을 다시 풀 때도 같습니다. 첫 행의 # 위에서 Ctrl-v 로 아래까지 고른 뒤 x 를 누르면 고른 열이 한 번에 지워집니다. 위 시뮬레이터의 vhost.conf 에서 그대로 해 볼 수 있습니다.
ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.